在Haskell应用程序中创建Haskell REPL

时间:2011-07-05 21:19:36

标签: parsing haskell read-eval-print-loop

我正在尝试在我的一个Haskell应用程序中嵌入Haskell REPL。我们的想法是默认情况下只加载Haskell库的一个子集,加上我自己的一组函数,用户可以使用它们来与环境进行交互。

要解决这个问题,我知道一种方法是创建一个(迷你)Haskell解析器+求值器并将我的mini-Haskell解析器函数映射到实际的Haskell函数,但我确信有更好的方法可以做此

使用Haskell为Haskell构建REPL有一个很好的方法吗?

1 个答案:

答案 0 :(得分:11)

已经存在的一些事情:

  • GHCi,当然,无论是能够查看它的实现方式还是能够直接使用它(即让你的REPL只是通过stdin / stdout与GHCi交谈)。
  • full GHC API,它允许你挂钩到GHC并让它为你做所有繁重的工作 - 加载文件,追逐依赖,解析,类型检查等。
  • hint,它是GHC API子集的包装器,侧重于交互式解释而不是编译 - 这似乎符合您的要求。
  • mueval,一个对加载的模块,资源使用等有限制的评估器,基本上是一种“安全”的交互模式。如果你曾经去过#haskell IRC频道,那就是lambdabot使用的。

以上所有假设您都不想自己处理编写Haskell解释器,这可能就是这种情况。