【发布时间】:2017-06-18 22:57:19
【问题描述】:
所以我有这些数据类型:
data Stuff a = Stuff (StuffPart a) (StuffPart a) deriving (Show,Eq)
data StuffPart a = Add a (StuffPart a)| End deriving (Show,Eq)
,现在可以为 Stuff 编写 fmap 函数吗?类似的东西:
instance Functor Stuff
where
fmap f (Stuff x y) = Stuff (f x) (f y)
显然我的 fmap 无法正常工作,但我可以做些什么来使其正常工作。 我也尝试过类似的代码:
instance Functor Stuff
where
fmap f (Stuff x y) = Stuff (f x) (fmap f y)
不知何故,我对 fmap 函数感到迷茫..
【问题讨论】:
-
你需要一个
StuffPart,就像一个列表一样......或者只是启用DeriveFunctor来为你做这项工作......