問題4.5 – SICP(計算機プログラムの構造と解釈)その178
問題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…続きを読む
問題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 …続きを読む
Vim-users.jp – Hack #8: 作業の履歴を辿る g- 状態を1つ戻す(アンドゥ) g+ 状態を1つ進める(リドゥ) これは、便利な使い方を覚えた。 これまで Vim で undo(u) を繰り返していて、redo (^r) をしても元に戻らなくなってしまい、"入力し直し"といったことをしていたけれど… undo-branches を使え…続きを読む
問題4.1 まず、gauche でそれぞれの評価順の場合の手続きを作って確かめてみる。 (define val 10) (define expression ‘((set! val (+ val 2)) (set! val (* val 2)))) 左から右に評価する場合 (define (list-of-values-left-to-right exps) (if (null? exps) ‘(…続きを読む