如何使functor的函数类型构造函数实例?重复的实例

fre*_*inn 3 haskell functional-programming instance functor typeclass

我正在尝试在类型类别中进行练习,但是我没有足够的知识来创建一个像函数一样的数据类型.

第一个练习说:"为e和(( - >)e)实现Functor实例."

我想我理解类型构造函数,但我不明白这个具体情况.

我不知道在哪里可以找到信息,我在谷歌搜索但失败了.

这是我的尝试,但(->) r a类型已经在GHC-base中定义.

我怎样才能创建一个data X y w = ...像函数一样的行为?

这是我的编译代码:

instance Functor ((->) r) where
  fmap f g = (.)
Run Code Online (Sandbox Code Playgroud)

bar*_*lle 9

为已有的实例编写新实例的规范方法是将其包装在newtype:

newtype Function a b = Function { getFunction :: a -> b }

instance Functor (Function a) where
  ...
Run Code Online (Sandbox Code Playgroud)

  • @freinn你可以让'let f1 = Function length :: Function [a] Int`,然后让`fmap show f1 :: Function [a] String`,例如.要运行它,你必须使用`getFunction`:`let f1 = Function length; getFunction(fmap show f1)[1,2,3]`得到``3"`作为结果. (2认同)