我正在尝试在typeclassopedia中进行练习,但是我没有足够的知识来创建一个像函数一样的数据类型。
第一个练习说:“为e和(( - >)e)实现Functor实例。”
我想我理解类型构造函数,但我不明白这个具体的情况。
我不知道在哪里可以找到信息,我在谷歌搜索但失败了。
这是我的尝试,但(->) r a
类型已经在GHC-base中定义。
如何创建一个行为类似函数的data X y w = ...
?
这是我的编译代码:
instance Functor ((->) r) where
fmap f g = (.)
答案 0 :(得分:9)
为已有的实例编写新实例的规范方法是将其包装在newtype
中:
newtype Function a b = Function { getFunction :: a -> b }
instance Functor (Function a) where
...