我正在开发Haskell中的程序并进行调试我创建了一些带有一些函数的文件.一些函数我声明了如何"underfined",我想在解释器(ghci)中设置这些函数.
例如:
r :: [String] r = undefined
在ghci(:load Experimental.hs)中加载此文件后,我使用以下命令:
让r ="示例字符串"
但我有下一个例外:
"*** Exception: Prelude.undefined
我可以在ghci函数中声明,在源文件(.hs)中定义了什么?或者可能存在其他解决方案
这是不可能的,主要是因为它打破了引用透明度:在"设置"函数之后,其他一些函数的结果会有所不同.(你可能会争辩说,undefined
提高异常是足够清楚的,一切都是安全的,但是你需要一些方法来确保没有重新定义适当的第一个定义的函数......这都不值得麻烦.)
执行此类操作的正确方法是使未定义的值成为使用它的函数的显式参数.然后,您可以在从解释器调用该函数时更改此参数.