Isn't a call to values completely equivalent to:

(values v1 ...) => (call/cc (lambda (k) (k v1 ...)))

so

(define (values . rest) (call/cc (lambda (k) (apply k rest))))

(which seems like the point that John is making)?  Since call/cc is
free in Chicken, wouldn't this be as fast as any procedure call (well,
any procedure call which involves a procedure with a rest list)?  Why
mess with all the C_values etc?  Or is this some sort of
standards-compliance issue (I see a check for a "values continuation"
in runtime.c)?

Will


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to