【发布时间】:2016-10-20 21:27:50
【问题描述】:
历史管理如何在 GHCI 或其他基于 Haskell 的 REPL 中工作?由于 Haskell 是一种纯语言,我猜它是使用 monad 实现的,也许是 state monad。
请注意我是 Haskell 的初学者,所以请提供详细的解释,而不仅仅是链接到源代码。
【问题讨论】:
-
GHCi 历史完全没有在 Haskell 中实现,它是一个名为
readline的第三方库的一部分,它是用 C 编写的。 -
谢谢,欢迎回答,看完变形金刚的链接我再看
-
请注意,它确实可以根据
State的变体来实现(或更准确地说是StateT History IO,其中History = [String]或其他东西)。它甚至可以单独在IO内部实现:基本上IO可以让人们进行带有副作用和可变变量的命令式编程 (IORef History)。碰巧 GHCi 为此重用了一个 C 库,而不是重新发明轮子。
标签: haskell state ghc read-eval-print-loop ghci