call-with-values / values
call-with-values / values の実装。
R5RSによれば values は以下のように call/cc を用いて定義できるらしい。
(define values (lambda things (call-with-current-continuation (lambda (cont) (apply cont things)))))
call/cc をうまいこと拡張しつつ call-with-values を実装した。
mona> (call-with-values (lambda () (values 4 5)) (lambda (a b) b)) 5 mona> (call-with-values * -) -1
うん。動いている。