Пример того, почему для всяких раздолбаев мало просто CPS, а нужны ещё и нормальные монады в системе типов. Вот посмотрите пример на LiveScript:
```
f = (p, cb)!->
cb(p + 1)
main =!->
x = 3
global.z = void
if x > 0
x += 1
y <-! f x
global.z = y + x
else
x -= 1
y <-! f x
global.z = x - н
alert global.z
```
Зайдите на LiveScript.net, скопипастите это, нажмите Compile, и убедитесь в том, что компилятор даже близко не понял, чего от него хотели.