2011-07-01から1ヶ月間の記事一覧

10月になったら

Hadoopの仕事があるかも。。。

紫藤さんのところのschemeの継続渡しスタイルの一番簡単な例をscalaで書いてみた。

scala> def my_return(x : Any) = x my_return: (x: Any)Anyscala> def k_plus(a : Int, b : Int, c : Int => Any) = c(a + b) k_plus: (a: Int, b: Int, c: (Int) => Any)Anyscala> def k_mult(a : Int, b : Int, c : Int => Any) = c(a * b) k_mult: (a: I…

ふーん

scalaにも継続ってあるのか。。。 resetで継続範囲を指定し、shiftで継続を生成するらすぃ。

gosh> (* (+ 1 (call/cc (lambda(cc) (set! *save* cc) 2))) (- 10 5)) 15 gosh> (*save* 3) 20これも同様に、*save*に束縛された段階で (lambda(x) (* (+ 1 x) (- 10 5)))みたいな感じになると。みたいな感じって言うのは、どっかにトップレベルに戻るため…

プログラミングGaucheの19章で継続のお勉強

「リストlisから述語pred?が真になる要素を見つけ、その要素とseedに手続きprocを適用する」 を普通の自己再帰で記述すると以下のようになる。(define (find-fold pred? proc seed lis) (cond [(null? lis) seed] [(pred? (car lis)) (let *1]))この関数を使…