問題4.26 – SICP(計算機プログラムの構造と解釈)その199
問題4.26 unless 式を if 式に変換する手続き unless->if を作り、導出された式として実装する。 ここでは4.1.7節の評価器に実装する。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ;; 省略 ((unless? exp) (analyze (un…続きを読む
問題4.26 unless 式を if 式に変換する手続き unless->if を作り、導出された式として実装する。 ここでは4.1.7節の評価器に実装する。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ;; 省略 ((unless? exp) (analyze (un…続きを読む
問題4.25 (define (unless condition usual-value exceptional-value) (if condition exceptional-value usual-value)) (define (factorial n) (unless (= n 1) (* n (factorial (- n 1))) 1)) 作用的順序の Scheme では定義された …続きを読む
use utf8; をすると \s で全角空白(スペース)にもマッチするということでスクリプトを作っていたら、どうも上手く動作しないので調べてみると。\s で全角空白にマッチするのは UTF8 フラグが付いている文字列に対してらしい。 外部から読み込んだファイルの文字列には use utf8; しても UTF8 フラグが付かないので上手く動かなかったらしい。 そこで、外部から読み込んだ文字列は E…続きを読む
問題4.24 手続き driver-loop の eval 部分を time で計測する。 (define (driver-loop) (prompt-for-input input-prompt) (let ((input (read))) (let ((output (time (eval input the-global-environment)))) (announce-output ou…続きを読む
問題4.23 4.1.7節の本文の版の analyze-sequence と Alysa の版の analyze-sequence の lambda 式部分にリーダーマクロを設置して実行してみる。 4.1.7節の本文の版の analyze-sequence (define (analyze-sequence exps) (define (sequentially proc1 proc2) #?=(…続きを読む
"Perl で半角カナと全角カナの変換をする" の記事を書いたら、"404 Blog Not Found:perl – で全角半角変換をモダンに行う" という CORE Module のみを使う方法というのが返ってきたのだけれど、Perl 特有の"呪文"というか"記号のお化け"のようなコードで何をしているの…続きを読む
問題4.22 構文解析手続き analyze に let->combination を使った解析を追加する。 (define (analyze exp) (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) … ((let? exp) (analyze (let->combination exp))) ((appl…続きを読む
CPAN 初回起動 $ sudo -H cpan この後 CPAN の設定をしていく。 CPAN 起動 $ sudo cpan cpan> CPAN モジュールのインストール cpan> install <モジュール名> CPAN 終了させる。 cpan> quit モジュールのインストールされた場所を確認 $ perldoc -ml <モジュール名>
Perl を使って半角カタカナと全角カタカナの変換をするスクリプトを、標準モジュールの Encode.pm と Unicode::Japanese と Lingua::JA::Regular::Unicode を使ってそれぞれ変換スクリプトを書いてみる。 まずは、標準モジュールの Encode.pm を使った場合。 変換を文字コード euc-jp で行うために、変換前と変換後に utf-8 との文…続きを読む
以下は構文解析を実行から分離した新しい評価器の全コード (define apply-in-underlying-scheme apply) ;;;; eval の定義 (define (eval exp env) ((analyze exp) env)) ;;;; 構文解析手続き (define (analyze exp) (cond ((self-evaluating? exp) (analyz…続きを読む