创建自己的数据类型,并尝试执行函子方法如下:哈斯克尔仿错误
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