2010-04-01から1ヶ月間の記事一覧

call/cc使ってみる4

前回(id:yagiey:20100424:1272115876)の続きっぽいけど... まず、コメントを受けて、 (and (begin (display 'a) 10) (call/cc (lambda (c) (begin (set! cont c) 10)))) の構文andはifへ展開できるので (if (begin (display 'a) 10) (call/cc (lambda (c) …

よくわからん

call/ccの中で継続を実行すれば、returnみたいな使い方ができるのは分かった。 ただ、捕捉した継続をcall/ccの外に持ち出して後で実行する場合の挙動が理解できない。 もういいや、いい加減プログラミングGauche再開するか。

call/cc使ってみる3

call/cc 入門 (Coroutine with call/cc) - MAYAHの前半を読んでみた。 演習問題みたいなのがあったので、やってみた。 gosh> (define cont #f) cont gosh> (and (call/cc (lambda (c) (begin (set! cont c) 10))) (begin (display 'a) 10)) a10 gosh> (cont …

call/cc使ってみる2

前回はcall/ccの引数の引数(つまり継続)でfを束縛して、そのあとfを実行してみた。 実行した結果を一見すると、fは(lambda (a) (inc a))のような手続きに思えるけど、mapを使ったときにちょっと違った。 今回はfで束縛せずにcall/ccの中で継続を実行してみ…

call/cc使ってみる

call/ccを実行すると、その時点での継続を捕まえられるらしい。 (call/cc (lambda (cont) body)) ってすると、継続がcontを束縛するらしい。 call/ccの戻り値はbodyだけど、bodyの中でcontが実行された場合はcontの引数がそのまま戻り値になるらしい。 cont…

はぅっ!

またしても! 一生懸命長い日記書いたのに、間違ってどこかのリンククリックしただけでページ遷移によりぜんぶパァ。 (´;ω;`)ブワッ

call/cc理解不能

19.4のcall/cc、全くわからん。何もかもが分からん。 「call/ccで継続を取得できるよ」って言ってるだけのような気がして、 なぜあのコードでfind-foldが正しく動くのか call/ccで取得した継続って具体的に何なのか なぜあそこでcall/ccするのか などなど、…