ich versuche, diesen Code in das CPS Form zu transformieren:Continuation-Übertragungsstil Summe Elemente
def sum (lst : List [ Int ]) : Int = lst match {
case Nil => 0
case first :: rest => first + sum (rest)
}
def sumC1(lst : List [ Int ], k : Int => Unit) : Unit = lst match {
case lst => k(sum(lst))
}
Ich bin ein neu zu scala und bekam sehr große Probleme, die Syntax undertand. es wäre sehr hilfreich, wenn Sie einige Syntax geben Sie mir diese Aufgabe
Hier ist mein Code mit einer typ Mismatch zu lösen:
def sum(lst: List[Int])(cont: Int => Int): Int = lst match {
case Nil => cont(0)
case first :: rest => sum(lst){rest => cont(first + rest) }
}
def sumC1(lst: List[Int], k: Int => Unit): Unit = lst match {
case lst => k(sum(lst))
}
sumC1(List(1, 2, 3), (v: Int) => println(v))
Diese Antwort vereitelt den Zweck der Übung, Sie sollen die Fortsetzung durch die gesamte Berechnung führen. – Lee
Das erste Snippet führt genau die Fortsetzung durch – Mikel
Ihr erstes Snippet kompiliert nicht, da 'cont' nirgendwo definiert ist. Wenn es so wäre, hätte es den Typ Int => Einheit, also würde "cont + i" keine Überprüfung geben. Sie berechnen nur die Summe direkt und übergeben sie dann an die Fortsetzung und verwenden sie nicht während des Summenprozesses. – Lee