2013-05-04 73 views
10

我需要一个(快速和肮脏的)方法来获取以字符串形式给出的Haskell表达式类型的一些表示形式。包含Haskell表达式的字符串的推断类型

我目前看到3个选项:

  • 使用GHC API - 然而,文档很快失去我。
  • 使用其他类型的推理工具 - 我建议尝试使用haskell-type-exts,但它无法输入除最常见的表达式外的所有其他类型的表达式。我不知道任何其他这样的工具。
  • 推出自己的HM推断器 - 我想避免这种情况,除非绝对必要

我也不需要一个完整的解决方案,在这个意义上,一个图书馆/工具,可以键入一个合理的基本子集哈斯克尔对我来说已经足够了。

那么实现这个最简单的方法是什么?

+0

看一看[其他Haskell的实现(http://www.haskell.org/haskellwiki/Implementations ) - 其中一些可能比GHC更容易使用。 – 2013-05-04 11:55:05

+2

如果你自己写作,Mark P. Jones的[THIH](http://web.cecs.pdx.edu/~mpj/thih/)可能是一个好的开始。 – 2013-05-04 12:11:23

回答

17

hint package提供了一个有点限制,但可能更容易理解的GHC API接口。你的目的可能就足够了吗?如果不是的话,你可以看看这些资源,以便更好地了解如何直接使用GHC API。

下面是一个例子程序:

import Language.Haskell.Interpreter 

main :: IO() 
main = do 
    r <- runInterpreter $ do 
    setImports ["Prelude"] 
    typeOf "map (+1)" 
    either print putStrLn r 

如果运行时,此打印

Num b => [b] -> [b] 
+0

这是很棒的东西,谢谢! – xcvii 2013-05-04 17:17:30

相关问题