我是Haskell的新手.我明白什么是算子和类别.
但我有另一个问题.我必须使用Functor类型类的仿函数吗?
我想我也可以定义另一个类型来做同样的事情Functor?
他们俩都可以这样做.
instance Functor MyData where
fmap f (MyData a) = MyData (f a)
Run Code Online (Sandbox Code Playgroud)
和
class MyDataFunctor f where
fmap :: (a -> b) -> f a -> f b
instance MyDataFunctor MyData where
fmap f (MyData a) = MyData (f a)
Run Code Online (Sandbox Code Playgroud)
当然你可以做到这一点.它只是有点重新发明轮子.标准类的好处是,如果合适的话大家都会使他们自己的类型的实例,因此,如果您编写能在一个通用的操作功能,Functor f那么它就会有一张巨大的不同类型构造的数量f从几百库.如果您将函数更改为require MyDataFunctor f,它将执行完全相同的操作,但只能使用您自己的类型MyData.
您可能想要编写自己的类的唯一明智的理由是,如果您想要不同的行为.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |