【发布时间】:2014-01-07 11:20:25
【问题描述】:
我正在从Learn You a Haskell for Great Good!学习Haskell的基础知识
书中有一个练习,你需要把Data.Map变成一个Functor。
我正在尝试创建自己的仿函数类型类并将 Data.Map 变成它的一个实例。
这就是我尝试过的:
import Data.Map as DataMap
import Data.List as DataList
class MyFunctor f where
myfmap :: (a -> b) -> f a -> f b
instance MyFunctor (Ord k) => (DataMap.Map k) where
myfmap f x = DataMap.fromList $ DataList.map (\(p,q) ->(p,f q)) $ DataMap.toList x
当我尝试编译它时,GHCI 给了我这个错误:
`myfmap' is not a (visible) method of class `Map'
我尝试查看其他 SO 答案、博客、邮件列表线程等,但运气不佳。
我发现的唯一内容是Haskell Wiki 中错误消息的描述,它说当尝试实例化一个类但没有导入尝试实现的函数时,GHCI 会抛出此错误。
我已经导入了 Data.Map 和 Data.List,所以我认为这不是真正的原因。
我做错了什么?
【问题讨论】:
标签: haskell dictionary functor