継続マラソン4

;; 昨日のarinoさんの例にならって手続き内に閉じた call/cc で大域脱出します。
;; joinするのに string-join 使っていたら本末転倒じゃないか!というのは遊び心ということで。
(define (message-join l)
   (call/cc
    (lambda (end)
      (letrec ((message-join-iter (lambda (ll messages)
                                    (if (null? ll)
                                        (end messages)
                                        (message-join-iter (cdr ll) (string-join (list messages (car ll))))))))
      (message-join-iter l "")))))

(display (message-join (list "muda" "na" "join" "dane\n")))