什么是Scalaz的Tower [A]和IvoryTower?
发布时间:2020-12-16 08:56:05 所属栏目:安全 来源:网络整理
导读:当我查看 scalaz.effect.IO源代码时,我注意到它有一个方法适用于以下签名: sealed trait IO[A] { def apply(rw: Tower[IvoryTower]): Trampoline[(Tower[IvoryTower],A)]} Tower [A]和IvoryTower定义为: case class Tower[A]()sealed trait IvoryTower Tow
当我查看
scalaz.effect.IO源代码时,我注意到它有一个方法适用于以下签名:
sealed trait IO[A] { def apply(rw: Tower[IvoryTower]): Trampoline[(Tower[IvoryTower],A)] } Tower [A]和IvoryTower定义为: case class Tower[A]() sealed trait IvoryTower Tower有一个例子: object IvoryTower extends IvoryTowers trait IvoryTowers { val ivoryTower = Tower[IvoryTower]() } 这些课程的目的是什么?为什么IO.apply接受Tower [IvoryTower]类型的参数? 解决方法
这是一个玩笑:IvoryTower是一个名为RealWorld的Haskell类型的端口. (我确实希望它有一个更清晰的名字 – 这个名字对新人来说既难以穿透,又实际上并不好笑).参见例如
https://wiki.haskell.org/IO_inside
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |