2015-04-30 32 views
4

是否有可能找到與GHCI where聲明中定義的功能的類型?如何找到與GHCI的子功能類型

例如,考慮這樣的功能:

myFunction a b c = case result of 
        2 -> ... 
          where 
            subFunctA = ... 
        _ -> ... 
          where 
            subFunctB = ... 
            subFunctC = ... 

類型的myFunction可以:t myFunction被找到。

是否有可能找到類型subFunctAsubFuncBsubFunctC與GHCI?

回答

2

如果您有足夠新版本的GHCi,您可以嘗試使用typed holes

基本上,如果你在代碼中寫下了下劃線,編譯器會吐出一條錯誤消息,告訴你該子表達式應該是。在你的例子中,只需將「...」替換爲「_」。

2

編號GHCi無法訪問其功能的來源。即使您自己在GHCi或源文件中定義函數,情況也是如此。

作爲一種替代方法:由於您可以訪問您想知道的函數的源代碼,因此您可以將函數複製到源文件的全局範圍中,編譯它們並查看GHC分配給它們的類型。我做了很多。 (另外,你可以直接將它們粘貼到GHCi中)。一旦你完成了這些,你可以打電話給他們:所有你想要的。這確實會產生比實際的子功能更普遍的類型,但它仍然可以幫助你。