問題4.51 – SICP(計算機プログラムの構造と解釈)その223
問題4.51 変数を元の値に戻す失敗継続(p257 analyze-assignment の注釈*2*)を、元の値に戻さずにそのまま失敗を継続させる。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ;; 省略 ((passignment? exp) (analyze-perman…続きを読む
問題4.51 変数を元の値に戻す失敗継続(p257 analyze-assignment の注釈*2*)を、元の値に戻さずにそのまま失敗を継続させる。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ;; 省略 ((passignment? exp) (analyze-perman…続きを読む
問題4.50 ramb の実装はすぐできたけれども、問題4.49の Alyssa の問題を ramb で解こうとしても上手くいかなかったので写経することにした。 最初に考えた解答は、単純に ramb-choices で選択肢リストをシャッフルした。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluatin…続きを読む
これまで css や html ファイルを編集中に、カラーコード(例:#ff00ff)を該当する色でハイライト表示する Vim プラグインを使っていたが、うっかり削除してしまった… もう一度探そうとしても見つからず、代わりに見つけたプラグインが css_color.vim – CSS color preview : vim online。 こちらのプラグインでは、カラーコー…続きを読む
問題4.49 各語のリストを amb で選び出して作る。 p253 の脚注にあるように、実行結果が "再帰の一つに「落ち込み」" 止ってしまっている。 問題4.50の特殊形式 ramb でこの問題は解決できるらしい。 (define (require p) (if (not p) (amb))) (define nouns (list ‘noun (amb ‘student ‘…続きを読む
副詞(adverb)、形容詞(adjective)を含めるように拡張する。 合成文はパス。 (define (require p) (if (not p) (amb))) (define nouns ‘(noun student professor cat class bed)) (define verbs ‘(verb studies lectures eats sleeps runs)) (d…続きを読む
キーワード補完 Vim プラグインの "ネオコン" こと neocomplcache で css を編集している時の Omni(オムニ)補完の補完候補の出るタイミングが自分の好みと合わなかったので({ の直後に補完候補が出てしまい、改行後に } を入力しても移動してくれず、インデントが崩れる。)、設定を変えてみた。 正規表現がテキトーだけど、希望通りの動作になってくれた。 if…続きを読む
問題4.46 set! で *unparsed* の先頭から解析をして語句を抜き取ってゆき解析結果を作るようになっているため、構文解析プログラムは amb の評価順序に依存している。 問題4.47 (parse-word verbs) に失敗すると (parse-verb-phrase) が無限ループに陥るために、構文解析に成功する間は動作するが、解析パターンが出尽くした後は "Ther…続きを読む
問題4.45 (define (require p) (if (not p) (amb))) (define nouns ‘(noun student professor cat class)) (define verbs ‘(verb studies lectures eats sleeps)) (define articles ‘(article the a)) (define preposi…続きを読む
Ubuntu 8.04 Hardy Heron で日本語入力を uim-anthy に変更するための手順メモ。 aptitude で uim-anthy のインストールを行う。 $ sudo aptitude install uim uim-anthy 設定ファイル uim-toolbar の修正を行う。 $ sudo vi /etc/X11/xinit/xinput.d/uim-toolbar …続きを読む
問題4.44 エイトクイーンパズルの問題。 8×8 の盤にしか対応していないけれど、これでよしとする。 あまりにも処理に時間がかかったので、こまめに distinct? を使うようにした。 (define (require p) (if (not p) (amb))) (define (queen-puzzle) (let ((q1 (amb 1 2 3 4 5 6 7 8))) (le…続きを読む