2015-05-04 67 views
1

我瞭解Haskell的函數類型聲明一樣,函數類型聲明多個單詞混淆了我

length :: String -> Int 
prefix :: Int -> String -> String 

但有時,在右側的類型不是簡單的類型,如StringInteger但它包含多個文字的話,並且看起來像定義的自定義等

例如詞語,這些類型的上this post定義,

withLocation :: Q Exp -> Q Exp 

Q,Exp是什麼意思?

formatLoc :: Loc -> String 

Loc是什麼意思?它是haskell庫的一部分嗎?

+0

你在一篇文章中提出三個問題。將帖子限制爲單個問題。 – rightfold

+0

對於大多數問題的答案是:你有一些名爲[Haskell中的種類](https://en.wikipedia.org/wiki/Kind_(type_theory)) - 它是類型上的一步 - 所以你的'String'在這裏有'*',你的''''有*'*'''含義:你必須給'Q'一個類型(類型'*'),它會導致某種類型的'*'(另一個類型) - 這就是爲什麼你必須放在那裏 - 它幾乎與函數/部分應用程序相同,... – Carsten

+0

爲另一個:有一些名爲'Loc'的​​類型[Hayoo](http:///hayoo.fh-wedel.de/?query=Loc)會發現 - 如果你看這個問題,它將是[Language.Haskell.TH]中的一個(https://hackage.haskell.org/package/template -haskell-2.10.0.0/docs/Language-Haskell-TH-Syntax.html#t:Loc)我想 - 如何讓emacs在這裏工作是另一個問題,取決於你的emacs安裝和你的環境。這可能是很多痛苦(我通常不會c是 - 使用Hadock來代替) – Carsten

回答

3

類型Q,ExpLoc是源文件開始時導入的模板哈斯克爾模塊的類型。

Q是一個參數化的類型,就像,比方說,從前奏,其在這裏施加到ExpMaybeIO

如何從emacs編輯器執行goto defintion

這可以使用Scion來實現,但不會幫助你的這種使用情況下,它不會讓你跳進外部庫(這可能不提供源代碼反正)。