Lambda the Ultimate Goto 名前つきブロックにもなる (define (count-chars) (letrec ((loop (lambda (ch count) (if (eof-object? ch) count (loop (read-char) (+ count 1)))))) (loop (read-char) 0))) Lambdaの中身: { 引数chとcountを取り、 chがEOFならcountを返す そうでなければ新たに読んだ文字chとcount+1を引数にして loop=自分自身を呼び出す }