問題4.6 – SICP(計算機プログラムの構造と解釈)その179
問題4.6 (define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((let? exp) (eval (let->combination exp) env)) ; 省略 (else (error "Unknown expression type — EVAL" exp)))) ;;;; let 式 …続きを読む
問題4.6 (define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((let? exp) (eval (let->combination exp) env)) ; 省略 (else (error "Unknown expression type — EVAL" exp)))) ;;;; let 式 …続きを読む
練習問題(p202) call-with-input-string と call-with-output-string を使って "13.3.2 オブジェクトを文字列に変換する(p176)" の write-to-string と read-from-string を実装する。 (call-with-input-string <文字列> <1引数の手続き>…続きを読む
問題4.5 cond 節(clause)の各式(expression)の car に => が含まれる場合とそうでない場合とに分けて処理する。 (define (expand-clauses clauses) (if (null? clauses) #f (let ((first (car clauses)) (rest (cdr clauses))) (if (cond-else-clau…続きを読む
文字列処理の各手続きを利用して、ユニコードエスケープ(unicode escape)処理をする手続きを作ってみる。 (use srfi-13) ;; for string-concatenate (define (char->unicode-escape char) (if (char>=? #\u007f char) ;; is ASCII ? (string char) (stri…続きを読む
はてなブックマーク界隈で話題になっている Firefox の起動時間短縮について試してみた。 Firefox3 の起動時間を短くするために、特にサイズの肥大化していたデータベースファイル places.sqlite と urlclassifier3.sqlite の2つの SQLite ファイルに対して reindex と vacuum を実行した。 places.sqlite はプロファイルフォ…続きを読む
問題4.4 まず、Gauche で and、or の単純なサンプルを作る。 (define (my-and exp) (define (my-and-iter exp result) (if (null? exp) result (if (car exp) (my-and-iter (cdr exp) (car exp)) #f))) (if (null? exp) #t (my-and-iter…続きを読む
問題4.3 ;;;; eval の定義 (define (eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-variable-value exp env)) (else (if (get ‘eval (operator exp)) ((get ‘eval (operator exp)) exp env…続きを読む
問題4.2 a. gosh> (load "./hoge.scm") #t gosh> (driver-loop) ;;; M-Eval input: (define x 3) *** ERROR: Unbound variable define Stack Trace: _______________________________________ 0 (eval…続きを読む
WordPress プラグイン WP-PageNavi を使った際にナビゲーションの総ページ数が実際のページ数と一致しなくなってしまった。 原因は、wp_pagenavi を実行する前に query_posts で $query_string の初期化を行っていたためらしく、$query_string の設定を適切に行うと正常に表示されるようになった。
gauche で動作する超循環評価器 問題を解く前に、先に超循環評価器を作ってプログラムを実行できる環境を作ってみることにする。 最初、以下のようなエラーが出て、動作しなくて悩んでいたが。 ;;; M-Eval input: (cons ‘1 ‘2) *** ERROR: invalid application: ((primitive #<subr cons>) 1 2) eval …続きを読む