@itのgaucheの連載を読んだ
を読んだ。おもしろかった。
A+Bのところをcall/ccを使うとどうなるんだろう?
(define (add/cc-maker message) (let ((info (cut print <> message)) (cont #f)) (info "A") (lambda (x) (call/cc (lambda (end) (if cont (cont x) (print "A + Bは" (+ x (call/cc (lambda (c) (set! cont c) (info "B") (end))))))))))) (define add/cc (add/cc-maker "を入力してください")); => Aを入力してください (add/cc 4); => Bを入力してください (add/cc 3); => A + Bは7 (add/cc 5); => A + Bは9
上手く入力を促す部分と計算する部分が分離できない><