Compare (define f (lambda (a) a)) (call-with-values (lambda () (values 3 3)) f)
vs (call-with-values (lambda () (values 3 3)) (lambda (a) a)) The first one fails with <unnamed port>:1:0: In procedure f: <unnamed port>:1:0: Wrong number of arguments to #<procedure f (a)> The second one gives 3. This is Guile 2.0.7.112-f5ea5. The behavior of the first case makes (compose f g) fail when f takes less args tan g produces. Regards Daniel