2013-05-04 25 views
10

Dizge olarak verilen Haskell ifadesinin türünün bir temsilini almak için (hızlı ve kirli) bir yönteme ihtiyacım var. Ancak, dokümantasyon oldukça hızlı beni kaybeder -Haskell ifadesi içeren bir dizenin türden çıkarımı

  • Kullanım GHC API:

    Şu anda 3 seçenek var.

  • Başka bir tür çıkarsama aracı kullan - haskell-type-exts denemek için önerildim, ancak en önemsiz ifadelerin tümünü yazamaz. Böyle başka bir araç bilmiyorum. Kendi HM inferer
  • Rulo - Ben sürece bu önleyeceğini kesinlikle gerekli

Hatta anlamda tam bir çözüm gerek kalmamasıdır makul bir temel alt kümeyi yazabilirsiniz bir kütüphane/aracı Haskell benim için yeterli olur.

Bunu başarmanın en kolay yolu nedir?

+0

[diğer Haskell uygulamaları] (göz at yazdırır: Burada

bir örnek program) - Bazıları GHC'den daha kolay kullanılabilir. –

+2

Eğer kendi başınıza yazıyorsanız, Mark P. Jones'un [THIH] (http://web.cecs.pdx.edu/~mpj/thih/) iyi bir başlangıç ​​olabilir. –

cevap

17

hint package, GHC API'sine biraz daha kısıtlı, ancak belki de daha anlaşılır bir arabirim sunar. Belki de amaçlarınız için yeterli mi? Aksi halde, GHC API'sini doğrudan nasıl kullanacağınıza dair daha iyi bir fikir edinmek için kaynaklara bakabilirsiniz. http://www.haskell.org/haskellwiki/Implementations

çalıştırırsanız
import Language.Haskell.Interpreter 

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

, bu

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

bu harika bir şey, teşekkürler! – xcvii

İlgili konular