在 Haskell 中,有一个名为Extend的类型类。
该类定义如下
class Functor w => Extend w where
extended :: (w a -> b) -> w a -> w b
该类的每个实例Extend
都应具有以下属性:
extended f . extended g = extended (f . extended g)
我可以看到它与Functor
. 特别是,Functor
的属性 fmap f . fmap g == fmap (f . g)
看起来类似于Extend
。
你会如何解释Extend
?它有什么意义?它是否使任何计算更容易?使用时做了哪些抽象Extend
?