@uents blog

Code wins arguments.

2015-08-01から1ヶ月間の記事一覧

SICP 読書ノート#67 - 4.4.4 質問システムの実装(1) (pp.278)

§4.4.4に入り質問システムの実装を追っていたのですが、詰まってしまいました。 stream-append-delayedやinterleave-delayedのストリーム操作がよくわからない 「§3.5.3 ストリームパラダイムの開発」の前半部で登場していたようだが、思いっきり読み飛ばし…

SICP 読書ノート#66 - 4.4.2-4.4.3 質問システムはどう働くか〜論理プログラミングは数学的論理か (pp.270-278)

一気に流し読みしましたが、説明ばかりでいまいち頭に入ってこない。 気になる記述を適当にメモ書き。 質問システム pattern matchingとunificationを中心に構成される パターンマッチング pattern matcherはあるデータが指定されたパターン(例:(job ?x ?y)…

SICP 読書ノート#65 - 4.4.1 プログラムとしての論理 (pp.269-270)

§4.4.1の続き「プログラムとしての論理」から。 プログラムとしての論理 規則は一種の論理的包含(logical implication)と見ることが出来る: 値のパターン変数への代入が, 本体を満足すれば, それは結論を満足する. 従って質問言語を, 規則に基づいて論理的推…

SICP 読書ノート#64 - 4.4 論理型プログラミング (pp.261-269)

いよいよ4章の最後のセクション「論理型プログラミング」に入りました。 ここでのキーワードは「一方向性計算から多方向性計算へ」と「ユニフィケーション」のようです。 また、本文のappendの定義について (define (append x y) (if (null? x) y (cons (car…

SICP 読書ノート#63 - 4.3.3 amb評価器の実装 (pp.254-261)

この節ではamb評価器の内部に迫ります。 個人的には自前でambオペレータを作った際に、継続やバックトラックと散々戯れたので、ここはさらっと読み流します。 amb評価器で重要そうなのは、やはりamb式の評価ですよね。 (define (analyze-amb exp) (let ((cpr…

SICP 読書ノート#62 - 4.3.2 自然言語の構文解析 (pp.250-253)

§4.3.2 の続き「自然言語の構文解析」から。 「そもそもこれ自前のambオペレータで動く?」という疑問はありますが、コードを書いてみます。 ambの引数に式を与える際、自前のambオペレータは単なる手続きなのでdelayさせます。 (define nouns '(noun studen…

SICP 読書ノート#61 - 4.3.2 非決定性のプログラムの例 (pp.248-250)

前回に引き続きambオペレータを使って色々な論理パズルを解いていきます。 問題 4.39 解そのものには影響しない 解が出るまでの時間(計算回数には)影響する →問題 4.37 のようにバックトラックの回数をカウントすればよい (define *backtrack-count* 0) (d…