0
я пытаюсь преобразовать этот код в виде КПС:Продолжение обгона элементы стиля сумма
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))
}
Я ма новых к Скале и получил очень большие проблемы undertand синтаксис. было бы очень полезно, если бы вы дать мне синтаксис для решения этой задачи
Вот мой код с несоответствием Typ:
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))
Этот ответ побеждает цель упражнения, вы должны пронизывать продолжение через весь расчет. – Lee
Первый фрагмент точно выполняет продолжение прохождения – Mikel
Ваш первый фрагмент не компилируется, так как 'cont' не определен нигде. Если бы это было так, он имел бы тип 'Int => Unit', поэтому' cont + i' не будет вводить проверку. Вы просто вычисляете сумму напрямую, а затем передаете ее в продолжение, не используя ее в процессе суммирования. – Lee