2017-05-26 4 views

Antwort

1

Diese umgekehrte Umsetzung ruft foldLeft mit A wie es Argument erste Typ ist (foldLeft#A = A) und List[A] wie es an zweiter Stelle ist Typargument (foldLeft#B = List[A]). Hier ist eine Art kommentierte Version, die dies sehr deutlich macht:

def reverse[A] (as: List[A]): List[A] = 
    foldLeft[A, List[A]](as = as: List[A], z = List[A]())(
    (h: List[A], acc: A) => Cons(acc, h): List[A] 
) 
1

Auch Cons (wenn es sich um eine Cons von Standardbibliothek ist) erzeugt einen Strom statt Liste. Wahrscheinlich möchten Sie stattdessen :: verwenden:

def reverse[A] (as: List[A]): List[A] = 
    foldLeft(as, List[A]())((acc, h) => h :: acc)