Недавно я начал изучать Scala и наткнулся на каррирование. Из ответа в этом post этот фрагмент кода
def sum(a: Int)(b: Int) = a + b
расширяется до этого
def sum(a: Int): Int => Int = b => a + b
Затем я увидел фрагмент из scala-lang, который показывает можно написать что-то подобное, чтобы эмулировать цикл while
def whileLoop (cond : => Boolean) (body : => Unit) : Unit = {
if (cond) {
body
whileLoop (cond) (body)
}
}
Из любопытства я попытался расширить это, и получил это
def whileLoop2 (cond : => Boolean) : (Unit => Unit) =
(body : => Unit) =>
if (cond) {
body
whileLoop2 (cond) (body)
}
Но, кажется, есть какой-то синтаксис, который мне не хватает, потому что я получаю сообщение об ошибке
error: identifier expected but '=>' found.
(body : => Unit) =>
^
Как правильно расширить эмулируемый цикл while?