【发布时间】:2011-04-07 01:16:40
【问题描述】:
任何一直关注Tony Morris' blog 和scala 练习的人都会知道这两种类型签名是等价的:
trait MyOption1[A] {
//this is a catamorphism
def fold[B](some : A => B, none : => B) : B
}
还有:
trait MyOption2[A] {
def map[B](f : A => B) : MyOption2[B]
def getOrElse[B >: A](none : => B) : B
}
此外,已经声明该类型是单独存在的(即该类型的所有实现都是完全等价的)。我可以猜测证明这两种类型的等价性,但真的不知道从哪里开始单居声明。如何证明这一点?
【问题讨论】:
-
cstheory.stackexchange.com 可能是解决这个问题的更好地方。
标签: scala functional-programming type-theory