我有理解仿函子的問題,具體是什麼混凝土類型是在LYAH中。我相信這是因爲我不明白[]
究竟是什麼。Haskell中的[](list構造函數)是什麼?
fmap :: (a -> b) -> f a -> f b
- 是
[]
,一個類型構造?或者,它是一個價值構造函數嗎? - 這是什麼意思?
[] :: [a]
? - 它是否像
Maybe
類型構造函數或Just
值構造函數?- 如果是喜歡
Just
那麼怎麼來Just
有一個像Just :: a -> Maybe a
而非Just :: Maybe a
簽名,換句話說,爲什麼不[]
類型[] :: a -> [a]
- 如果是喜歡
- LYAH說這個,因爲它適用於函子:公告我們怎麼沒有寫實例Functor [a],因爲從fmap ::(a - > b) - > fa - > fb,我們看到f必須是一個類型構造函數。 [a]已經是一個具體類型(其中包含任何類型的列表),而
[]
是一種類型構造函數,它可以接受一種類型,並且可以生成[Int],[String]或甚至[[String]]類型。雖然[]
的類型意味着它就像[a]
的字面意思,但我很困惑LYAH想要達到什麼目的?
如果你想要某種類型的a - > [a],那就是有趣的(:[])函數。 – 2010-02-16 07:00:36
^或者您可以使用'return'(或'pure'或其他):D – 2010-02-17 21:10:59
@DanielVelkov:':[]'是':'部分應用於'[]'使用部分語法,只是爲了清楚。 – mk12 2012-07-18 03:55:02