2015-04-03 119 views
1

为什么斯卡拉斯的Applicative.scalapoint方法?scalaz的应用#点方法?

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) 

也许它可能只是有没有最终访问和point一个def pure方法?

回答

3

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

然后,两个PurePointed被丢弃(因为各种原因)中并加入到Applicative(曾经是PointedApply加)的point方法。 pure别名一直存在,因为历史上这是在斯卡拉斯调用这个操作。

所以当然,你可能只有point(猫只有pure),并且未来某个版本的Scalaz可能会摆脱别名。他们只是名字。

+0

你能解释为什么从Scalaz中删除了Pure! – ZhekaKozlov 2015-07-25 19:29:10