ghci:在模块重新加载后保留范围内的定义值

ghci:在模块重新加载后保留范围内的定义值

问题描述:

我想知道在模块重新加载时是否可以保留ghci中的赋值?ghci:在模块重新加载后保留范围内的定义值

例如我在ghci中分配一个值:

ghci> let x = 1 

ghci> x <- getLine 

进入:r后重新加载现有模块x不在范围了。通常可以保留赋值,例如在Python解释器中? (这真是太方便了......)

即使寿,实际上在ghci中每一行代表一个功能,那就是(monadically)结合到下一个,我还是想知道,如果保持这一状态是可能的。

我不知道有任何这样做的方式。

麻烦的是,您可能会将某些变量绑定到特定类型的值,编辑源以删除该类型,然后重新加载。现在你有一个不再存在的类型的变量。

不过,你会认为它不应该太难检测到,并且只丢弃那些没有意义的变量。 (真正有趣的部分大概是当一个类型仍然存在,但现在有不同数量的字段,或类似的东西...)

+1

我不认为ghci可以做到这一点,但它是完全可以做一个互动Haskell保留绑定。另外,没有必要使用:reload命令。 – augustss

+0

嗡嗡声取决于变量如何绑定到名称空间。我刚刚开始使用python交互式解释器,发现这个功能相当方便。如果你在模块test中绑定一个变量'x = 3',那么这个变量在'test.x'范围内。如果在'test'中删除'x',并重新加载模块'test.x',但是例如先前定义的顶层变量'x'仍然在范围内。 – JHannes