GHCi加载文件并在repl中重新定义其中一个函数

时间:2015-10-31 13:38:35

标签: haskell

想象一下,我在GHCi中加载一个文件(不是模块),就像这样

:l file.hs

并且文件内部有两个函数fgf有一些错误(例如,错误的结果)和g调用{{ 1}}。

如何在GHCi REPL中使用正确的版本重新定义f,并使f调用新版本而无需更改或重新加载文件?

由于

1 个答案:

答案 0 :(得分:2)

你不能

在repl中加载文件时,好像定义位于单独的模块中,因此g将不会查找您在repl中定义的f,即使来自您的观点是您的定义隐藏了原始的f函数。

Haskell使用词法范围,而您建议的是动态范围功能。见lexical scoping vs dynamic scoping。 修改repl以使用词法作用域编译代码然后允许人们使用动态作用域修改它是完全不切实际的。因此,它没有完成,你问的是不可能的。