2017-05-28 50 views
-1
def foldRight[B] (z : =>B) (f :(A, =>B) => B) :B 

def headOptionViaFoldRight():Option[A]=foldRight(None:Option[A])((h,t)=> Some(h())) 

def takeWhileViaFoldRight(f:A=>Boolean):Stream[A]=foldRight(Stream[A]())((h,t)=> Some(h)) 

def forAll(p:A=>Boolean):Boolean=foldRight(true)((a,b)=>p(a)&&b) 

爲什麼無:HeadOptionViaFoldRight中的第一個參數中的選項[A]?Scala中的懶惰中的對角​​

爲什麼在[takeWhileViaFoldRight]的第一個參數中流[A]?

爲什麼真的在forAll的第一個參數?

只是混淆在foldRight的第一個參數中使用什麼?

回答

1

只是混淆了在foldRight的第一個參數中使用什麼?

初始值:你會得到一個空序列。

1

爲什麼真的在forAll的第一個參數?

這是慣例,和歷史上的先例,在一個空的集合exists()返回上falseforall()一個空的集合返回true