2012-07-08 54 views
5

我想了解Yesod的以下類型同義詞正在做什麼。Haskell類型同義詞

type HtmlUrlI18n msg url = Translate msg -> Render url -> Html

我找不到在學習的榜樣你一些哈斯克爾或類型同義詞與->目前Haskell的維基。任何鏈接或解釋都非常感謝。謝謝。

+9

它只是一個函數類型的同義詞。 – 2012-07-08 18:59:30

+3

無處不在你看到'HtmlUrlI18n msg url',用'Translate msg - > Render url - > Html'代替。 – sdcvvc 2012-07-08 19:38:22

+0

要添加到貓說:這是因爲右手型簽名有點笨拙,也許很難記住。假設你有一個函數將'Translate msg - > Render url - > Html'作爲許多參數之一。這很快就會變得難以理解,可能還不清楚,而使用「HtmlUrlI18n msg url」會更好。 – gspr 2012-07-08 21:37:35

回答

4

它只是一個(長寫下來)函數類型的同義詞。例如,以下內容應該是有效的Haskell

--Example of a function type synonym 
type StrFn = String -> String 

foo :: StrFn 
foo s = s ++ "!" 

--Example of a function type synonym with type parameters 
type Fn a = a -> a 

bar :: Fn String 
bar s = s ++ "?" 
+0

非常感謝大家的回答。很有幫助。 – David 2012-07-10 14:15:30

+0

@David:不要忘記將答案標記爲已接受,所以問題留下未答覆的選項卡。如果你願意,你也可以自己寫一個答案。 – hugomg 2012-07-10 15:01:37

+0

謝謝。我已經做到了。 – David 2012-07-11 19:09:32