継続マラソン6

;; なんとなく継続を渡す手続きを書きたくなった。
;; 誰かネタください(切実
(define cool-cont #f)
(define bad-cont #f)

(begin
  (let ((ct (call/cc (lambda (c) (set! cool-cont c) "0"))))
    (if (not (string=? ct "0"))
        (begin
          (display ct)
          (display " is cool\n")))))

(begin
  (let ((ct (call/cc (lambda (c) (set! bad-cont c) "0"))))
    (if (not (string=? ct "0"))
        (begin 
          (display ct)
          (display " is bad\n")))))

(define (do-something-by-cont text cont)
  (cont (string-join (list "do something -" text))))

(do-something-by-cont "Higepon" cool-cont)
(do-something-by-cont "Hagepon" bad-cont)