scalaz的应用#point方法?

时间:2015-04-03 20:13:59

标签: scalaz applicative

为什么scalaz的Applicative.scalapoint方法?

trait Applicative[F[_]] extends Apply[F] { self =>
  ////
  def point[A](a: => A): F[A]

  // alias for point
  final def pure[A](a: => A): F[A] = point(a)

也许只有def pure方法没有最终访问者和point

1 个答案:

答案 0 :(得分:3)

这里有很长的设计决策和历史事故历史。在Scalaz 6中,有一个名为Pure的类型类,另一个名为Pointed(扩展Pure)。那时候没有point方法,只有pure

然后,PurePointed被丢弃(出于各种原因),point方法被添加到Applicative(过去曾为Pointed加上Apply)。 pure别名被保留了下来,因为历史上这是Scalaz中调用的操作。

当然,您可能只有point(Cats只有pure),并且Scalaz的某些未来版本可能会删除别名。他们只是名字。