2010-01-01から1年間の記事一覧

Lazy K方式のYコンビネータは分かりやすいなー

Lazy Kで再帰をしようとしたら以下のようなイディオムを使うんだけど ;; fact ((lambda (x) (x x)) (lambda (self) (lambda (n) (if (zero? n) 1 (* n ((self self) (- n 1))))))) このイディオム部分をくくりだすとそれがYになる (lazy-def '(Y f) '((lambd…

call/ccの練習でgenerator作ってみる

call/ccを使って値とnextが多値で帰ってくるようなgeneratorを作ってみようとしたら予想以上に難しかった。はじめはset!なしで書こうとしたんだけど出来なさそうだった。思いつかないだけでなにか方法があるかもしれないけど。 (define (generator func) (de…

Lazy K触り中

とりあえず What's your name? >Hoge Hello, Hoge.的なプログラムを書いた。 面白いね (load "../lazier.scm") (load "../prelude.scm") (load "../prelude-numbers.scm") (define (string->expr str) (case (string-length str) ((0) 'i) ((1) (last-char->…

JavaScriptのジェネレータについて思うこと

追記 (2014/3/21) 以下がこの記事に対する自分の答えになります JavaScriptのジェネレータとDeferredを組み合わせるといい感じ! (JS1.7のyieldでharmonyのawait式ぽいことをする) - fujidigの雑記 JavaScriptにジェネレータってあるじゃないですか。それを…