ghci:在模块重新加载后保留范围内的定义值
问题描述:
我想知道在模块重新加载时是否可以保留ghci中的赋值?ghci:在模块重新加载后保留范围内的定义值
例如我在ghci中分配一个值:
ghci> let x = 1
或
ghci> x <- getLine
进入:r
后重新加载现有模块x
不在范围了。通常可以保留赋值,例如在Python解释器中? (这真是太方便了......)
即使寿,实际上在ghci中每一行代表一个功能,那就是(monadically)结合到下一个,我还是想知道,如果保持这一状态是可能的。
答
我不知道有任何这样做的方式。
麻烦的是,您可能会将某些变量绑定到特定类型的值,编辑源以删除该类型,然后重新加载。现在你有一个不再存在的类型的变量。
不过,你会认为它不应该太难检测到,并且只丢弃那些没有意义的变量。 (真正有趣的部分大概是当一个类型仍然存在,但现在有不同数量的字段,或类似的东西...)
我不认为ghci可以做到这一点,但它是完全可以做一个互动Haskell保留绑定。另外,没有必要使用:reload命令。 – augustss
嗡嗡声取决于变量如何绑定到名称空间。我刚刚开始使用python交互式解释器,发现这个功能相当方便。如果你在模块test中绑定一个变量'x = 3',那么这个变量在'test.x'范围内。如果在'test'中删除'x',并重新加载模块'test.x',但是例如先前定义的顶层变量'x'仍然在范围内。 – JHannes