Scalaz Bind.bind 在哪里实现?
Where is Scalaz Bind.bind implemented?
很好奇scalaz.Bind.bind
方法是在哪里实现的?谢谢
trait Bind[F[_]] extends Apply[F] { self =>
////
/** Equivalent to `join(map(fa)(f))`. */
def bind[A, B](fa: F[A])(f: A => F[B]): F[B]
...
我正在查看 7.3.0-SNAPSHOT 源。
Bind
遵循类型类模式,这些模式往往针对支持它们定义的操作的不同类型有多种实现。该实现称为类型类实例。 Scala 标准库 类 的大多数 Scalaz 类型类实例都位于 scalaz.std
包中。示例:
Bind[List]
: listInstances
scalaz.std.ListInstaces
特征中的隐式值,在 scalaz/std/List.scala 中定义。它可以通过 scalaz.std.list
对象(在同一个文件中)或 scalaz.Scalaz
对象(在 scalaz/Scalaz.scala 中)导入,它们都扩展了 ListInstances
特征。
Bind[Option]
:optionInstances
sclaaz.std.OptionInstances
中的隐式值,在 scalaz/std/Option.scala 中定义。它可以通过 scalaz.std.option
对象(在同一个文件中)或 scalaz.Scalaz
对象(在 scalaz/Scalaz.scala 中)导入,它们都扩展了 OptionInstances
特征。
您还可以通过创建实现一个或多个相应特征的隐式值或转换来为您自己的类型创建 Scalaz 类型类实例。要可见,必须将隐式导入到您的上下文中。
很好奇scalaz.Bind.bind
方法是在哪里实现的?谢谢
trait Bind[F[_]] extends Apply[F] { self =>
////
/** Equivalent to `join(map(fa)(f))`. */
def bind[A, B](fa: F[A])(f: A => F[B]): F[B]
...
我正在查看 7.3.0-SNAPSHOT 源。
Bind
遵循类型类模式,这些模式往往针对支持它们定义的操作的不同类型有多种实现。该实现称为类型类实例。 Scala 标准库 类 的大多数 Scalaz 类型类实例都位于 scalaz.std
包中。示例:
Bind[List]
: listInstances
scalaz.std.ListInstaces
特征中的隐式值,在 scalaz/std/List.scala 中定义。它可以通过 scalaz.std.list
对象(在同一个文件中)或 scalaz.Scalaz
对象(在 scalaz/Scalaz.scala 中)导入,它们都扩展了 ListInstances
特征。
Bind[Option]
:optionInstances
sclaaz.std.OptionInstances
中的隐式值,在 scalaz/std/Option.scala 中定义。它可以通过 scalaz.std.option
对象(在同一个文件中)或 scalaz.Scalaz
对象(在 scalaz/Scalaz.scala 中)导入,它们都扩展了 OptionInstances
特征。
您还可以通过创建实现一个或多个相应特征的隐式值或转换来为您自己的类型创建 Scalaz 类型类实例。要可见,必须将隐式导入到您的上下文中。