Как сделать сброс с двумя сменами в Scala? - PullRequest
5 голосов
/ 28 мая 2011

Я понимаю из этого сообщения в блоге , как воссоздается один shift в reset.

reset { 1 + shift {k:Int => Int => k(5)} + 1}

преобразуется в

val reified = {shiftValue:Int => 1 + shiftValue + 1}; reified (5)

Теперь у меня есть другой пример:

reset { 
  1 + shift(k1:Int => Int => k1(5)} + 1;
  2 + shift(k2:Int => Int => k2(6)} + 2
}

Он ограничен до:

val reified ={shifyValue1:Int =>
    1 + shiftValue + 1; 
    2 + shift(k2:Int => Int => k2(6)} + 2
}
reified(5)

Как я могу улучшить его, чтобы избавиться от 2-го shift?

1 Ответ

4 голосов
/ 28 мая 2011
val reified ={shiftValue1:Int =>
    1 + shiftValue + 1; 
    val reified2 = {shiftValue2: Int => 2 + shiftValue + 2};
    reified2(6)
}
reified(5)

В основном то же самое преобразование.

(здесь не установлено scala, поэтому я проверял только это преобразование в Scheme, которое должно вести себя так же, игнорируя любые проблемы системы типов.)

...