从范畴的角度来看,函子是两个映射对(一个在对象之间,另一个在类别的箭头之间),遵循一些公理。我假设,每个函子实例都类似于数学定义,即可以同时映射对象和函数,但是Haskell的Functor类只有映射函数的函数fmap。每个Monad类型的M都有一个函数return :: a -> M a。
而函子类型F没有函数return :: a -
class HasDynFlags m where虽然类型化名称看起来是不言自明的,但我在类型化定义中找不到其他约束,即m必须是Monad,或者至少是Functor,这样我们才能访问该值。但是,我在代码库中发现的大多数代码都是在do-表示法中使用的,例如dynFlag <- getDynFlags,其中m被进一步限制为Monad的一个实例。我
我正在尝试从运行以下组合器 def forever[A, B](a: F[A]): F[B] =flatMap is not a member of type [error] a flatMap (_ => t)我的理解是,我需要使用F[_],因为它表示更高类型的类型。例如,我在这本书的前一章中写了一个M