2017-05-28 2 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) 

Warum nicht: Option [A] im ersten Parameter in headOptionViaFoldRight?FoldRight in Faulheit in der Skala

Warum Stream [A] im ersten Parameter in takeWhileViaFoldRight?

Warum stimmt der erste Parameter in forAll?

Nur verwirrt, was in den ersten Parameter in FoldRight zu verwenden?

Antwort

1

Nur verwirrt, was in den ersten Parameter in FoldRight zu verwenden?

Der Anfangswert: was Sie in einer leeren Sequenz bekommen würden.

1

Warum stimmt der erste Parameter in forAll?

es durch Konvention ist, und historischen Präzedenzfall, daß exists() auf leeren Sammlung zurückgegeben false während forall() auf eine leere Sammel true zurückgibt.

Verwandte Themen