Sat Apr 25 00:24:04 CEST 2009

n-ary instead of unary ops

the problem here is that the simple nesting can't be used:

(lambda (stack) (c (b (a stack))))

instead we have

(lambda (x y z code)
  (let next ((x x)
             (y y)
             (z z)
             (c code))
    (if (null? c)
        (values x y z)
        (call-with-values (lambda () ((car c) x y z)) next))))

it's probably not worth fussing about this, since i don't know what's
going on without knowledge of the compiler.  maybe i'm just looking
for 'compose?

(define (pp a b) (values (cons (car b) a) (cdr b)))
((compose pp pp pp) '() '(a b c d e f g h i j k)) =>
(c b a)
(d e f g h i j k)