kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

2016-06-01から1ヶ月間の記事一覧

Scheme修行(2) 第12章

multirember 第12章「避難しましょう」ではまずmultiremberを題材にします (define multirember (lambda (a lat) (cond ((null? lat) (quote ())) ((eq? (car lat) a) (multirember a (cdr lat))) (else (cons (car lat) (multirember a (cdr lat))))))) mul…

Scheme修行(1) はじめに & 第11章

はじめに 「訳者まえがき」や「はじめに」はだいたいScheme手習いと似たようなことが書いてあるので さらっといきます 継続(continuation)と代入(set!)という新たな概念を使用してプログラミングの幅を広げている 継続はともかくとして、代入なんて、と思っ…

Scheme手習い(24) eval、またはvalue、またはmeaning(5)

普通のソースをdefineを使わないソースに変換する手法は 様々なシーンで役立つノウハウですのでまとめておきましょう(嘘 lambdaによる名前付け defineによる定義は、lambdaによる名前付けに書き換えることができます 修正前 (define A (lambda (a) (aaaaa))…

Scheme手習い(23) eval、またはvalue、またはmeaning(4)

でも、(define ...)はどうなのでしょう。 再帰はYコンビネータによって得られるので、必要はありません。 Yコンビネータによる変形を行うと、インタプリタ上でインタプリタを走らせることが可能であるということですか。 はい。でもそんなに悩まないでくださ…

Scheme手習い(22) eval、またはvalue、またはmeaning(3)

関数の呼び出し関係を整理してみました ちょっと細かい関数まで書きすぎたかな 以上

Scheme手習い(21) eval、またはvalue、またはmeaning(2)

いよいよ関数適用に入ります (define function-of car) (define arguments-of cdr) (define *application (lambda (e table) (ls-apply (meaning (function-of e) table) (evlis (arguments-of e) table)))) (define evlis (lambda (args table) (cond ((nul…

Scheme手習い(20) eval、またはvalue、またはmeaning

ついに最終章、ラスボス2です 小さいschemeの核にあたるもの、いわゆる?evalを作ります でもこの本ではvalueっていう名前になってます でもvalueは空っぽの環境を作るだけで実際の仕事の中心はmeaningという関数がやってます ラスボス2と言っても、Yコンビ…

Scheme手習い(19) Yコンビネータ(4)

Yコンビネータでいろいろな関数を動かしてみます (define Y (lambda (le) ((lambda (f) (f f)) (lambda (f) (le (lambda (x) ((f f) x))))))) 再帰しない関数を渡しても動くかな ((Y (lambda (add2) (lambda (n) (add1 (add1 n))))) 1) ⇛ 3 動いた! じゃあ…