5.5 翻訳系 – SICP(計算機プログラムの構造と解釈)その281
いよいよ、最後の5.5節。 コンパイラを作ってプログラムを走らせる方法を調べる。 今回も問題を解く前に、動作するコンパイラを作っておく。 作るといっても書き写すだけ。そのまま、修正の必要もなく動作した。 ;;;; 5.5.1 翻訳系の構造 ;;; 翻訳系のトップレベルの振り分け処理 compile (define (compile exp target linkage) (cond ((self-…続きを読む
いよいよ、最後の5.5節。 コンパイラを作ってプログラムを走らせる方法を調べる。 今回も問題を解く前に、動作するコンパイラを作っておく。 作るといっても書き写すだけ。そのまま、修正の必要もなく動作した。 ;;;; 5.5.1 翻訳系の構造 ;;; 翻訳系のトップレベルの振り分け処理 compile (define (compile exp target linkage) (cond ((self-…続きを読む
問題5.30 a. これまで、未束縛の変数があった場合は基盤の scheme のエラーを発生させていたために、評価器の駆動ループが終了されて基盤の scheme に戻ってしまっていた。 これを、未束縛の変数の存在を捕捉し評価器の駆動ループ内で処理させるように変更する。 ;;; EC-Eval input: (+ x 2) *** ERROR: Unbound variable x Stack Tr…続きを読む
問題5.29 ;;; EC-Eval input: (define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (total-pushes = 3 maximum-depth = 3) ;;; EC-Eval value: ok ;;; EC-Eval input: (fib 3) (total-pushes = 128 m…続きを読む
問題5.28 評価器を末尾再帰的でないように ev-sequence を変更(p333)し、それぞれの版の factorial を実行する。 反復的手続きの場合 ;;; EC-Eval input: (define (factorial n) (define (iter product counter) (if (> counter n) product (iter (* counter p…続きを読む
問題5.27 再帰的 factorial でのスタックの最大深さとプッシュ総数を調べる。 ;;; EC-Eval input: (define (factorial n) (if (= n 1) 1 (* (factorial (- n 1)) n))) (total-pushes = 3 maximum-depth = 3) ;;; EC-Eval value: ok ;;; EC-Eval i…続きを読む
Ubuntu 9.10 から標準に採用された Grub2 の設定を行い、リカバリモードでの起動を選択できるようにする。 OS が1つしかインストールされていないと Grub2 はメニューを表示せずにその唯一の OS を起動する。 そこで、設定ファイル /etc/default/grub を編集し Grub2 のメニューが表示されるように変更する。 /etc/default/grub を以下のように…続きを読む
Ubuntu 9.10 で Gnome アプレットの時計の天気と気温を表示させるために、場所の設定をしようとして場所の名前の補完リストに日本の都市が出てこないのでおかしいなと思ったら、"日本" と日本語で入力しないといけなかった。 これで、日本の都市のリストが出てきたのはいいが、一番近くの都市になる "神戸" が無い・・・、かわりになぜか "芦屋&…続きを読む
Google が公開したプログラミング言語 "The Go Programming Language" を Mac OSX 10.6.2 (Snow Leopard) と Ubuntu 9.10 (KarmicKoala) にインストールして試してみた。 OSX では Xcode と MacPorts をインストールしておく。 環境変数の設定 .bashrc に以下の記述を追加…続きを読む
PPA : “Ubuntu Boot” team 改善されたという Ubuntu 9.10 (KarmicKoala) の起動時間をさらに短縮することができるパッケージということらしい。 ただし、カスタムの kernel と readahead をインストールするようなので、試してみるのは自己責任で。 ubuntu-boot/ppa のインストール $ sudo add-apt-repositor…続きを読む
以下のコマンドで Georgia とか Times New Roman, Verdana といったフォントが、 /usr/share/fonts/truetype/msttcorefonts/ にインストールされる。 $ sudo aptitude install ttf-mscorefonts-installer $ ls /usr/share/fonts/truetype/msttcorefo…続きを読む