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

标签 haskell ghci

我想知道重新加载模块时是否可以在 ghci 中保留分配的值?

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

ghci> let x = 1

ghci> x <- getLine

输入 :r 重新加载现有模块后,x 不再在范围内。通常是否可以保持分配可用,例如在 Python 解释器中? (这真是太方便了……)

即使实际上 ghci 中的每一行都代表一个(单子(monad))绑定(bind)到下一个函数的函数,我仍然想知道是否可以维持该状态。

最佳答案

我不知道有什么方法可以做到这一点。

问题在于您可能将某些变量绑定(bind)到特定类型的值,编辑源以删除该类型,然后单击重新加载。现在你有一个不再存在的类型的变量。

不过,您可能会认为检测到这一点应该不会太难,并且只丢弃不再有意义的变量。 (真正有趣的部分大概是当类型仍然存在但现在具有不同数量的字段时,或者类似的事情......)

关于haskell - ghci:模块重新加载后将定义的值保留在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960405/

相关文章:

haskell - 使用 GHCi 时如何为函数提供显式类型声明?

haskell - “Strictness” 方括号

java - 在 Java 中使用命令提示符

haskell - 是否可以在 Haskell 中使用自己的语法糖(如 do 表示法或箭头表示法)?

emacs - 映射:edit command to a certain editor

haskell - 重载函数签名 haskell

haskell - 为什么 `succ i` 在 `i::Num a => a` 处有效(而不是 `Enum a` )?

debugging - 我如何使用 GHC.Exts.breakpoint?

haskell - 反射(reflection) Haskell 中函数的输入?

haskell - 如何正确强制评估 IO monad 中的纯值?