我想了解scalaz是如何组织的,我想知道常见的monad(或其他类型类)实例,如monad [Int], monad [List]…定义。
以Monad[List]为例。我看到那个混蛋了。std模块包含ListInstances trait,其中包含一些列表的类型类实例的隐式值,如Monoid[List]。这个隐式值定义了monoid列表实例的追加函数。
是否有一个地方可以找到Monad[List]的隐式值,它定义了列表的点和绑定?
在这里您可以找到Monad
实例和其他实例,如Monoid
为List
: ListInstances。正如你所看到的,没有Monad[List]
实例,只有MonadPlus[List]
实例。MonadPlus
是一个Monad
加上一个ApplicativePlus
(没有双关语的意思)。
通常有trait
, AllInstances
,混合了所有的实例你可以在这里找到它