2013-05-04 46 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

相關問題