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 类型类实例。要可见,必须将隐式导入到您的上下文中。