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