創建自己的數據類型,並嘗試執行函子方法如下:哈斯克爾仿錯誤
data Hieu a = Hieu [a] deriving (Show, Read, Eq)
instance Functor Hieu where
fmap f (Hieu [x]) = Hieu (f [x])
這是非常簡單的代碼,但失敗了。你能解釋爲什麼嗎?
感謝您的回覆。現在我明白,我只適用於一種情況。我試圖改寫如下,而不使用地圖
data Hieu a = Hieu [a] deriving (Show, Read, Eq)
consHieu :: a -> (Hieu a) -> (Hieu a)
consHieu x (Hieu xs) = Hieu (x:xs)
instance Functor Hieu where
fmap f (Hieu (x:xs)) = consHieu (f x) (fmap f (Hieu xs))
fmap f (Hieu []) = Hieu []
感謝您的答覆。現在我明白,我只適用於一種情況。我試圖重寫爲跟隨,而無需使用地圖
數據總管Hieu一個=總管Hieu並[a]導出(顯示,讀取,等式)
consHieu ::一個 - >(總管Hieu一) - >(總管Hieu一)
consHieu X(總管Hieu XS)=總管Hieu(X:XS)
例如函子總管Hieu其中
fmap f (Hieu (x:xs)) = consHieu (f x) (fmap f (Hieu xs))
fmap f (Hieu []) = Hieu []
如果我們已經回答了您的問題並達到您的滿意度,請接受其中一個答案(單擊您希望接受的答案左側的複選標記)。如果還有一點您不清楚,請明確說明您不瞭解的內容,並明確要求提供幫助。 – dave4420