そういえば、 call/cc を使ったコードというと SRFI 34: Exception Handling for Programs しかきちんと読んだことがないので、 WiLiKi:Scheme:call/ccパズル というのもあるけれど、とりあえず ((call/cc call/cc) (call/cc call/cc)) について考えてみる。 まず、そのままの形ではイメージしにくいので lambda をはさんでみる。 ((call/cc (lambda (k1) (call/cc (lambda (k2) (k1 k2))))) (call/cc (lambda (k3) (call/cc (lambda (k4) (k3 k4)))))) 最初の (call/cc call/cc) は k2 を返し、ふたつめは k4 を返す。そして、k2 の継続に k4 を引き渡し((k2