問題4.12 – SICP(計算機プログラムの構造と解釈)その184
問題4.12 手続き set-variable-value!、define-variable!、lookup-variable-value を見ると、共通パターンになっている手続き scan を抽象化するとよい。 scan を 変数 var が見つかった場合は見つけた変数のリストを返し、見つからなかったばあいは ‘() を返すようにする。 各手続きにおいて scan の結果に応じて処理を行わせる。…続きを読む
問題4.12 手続き set-variable-value!、define-variable!、lookup-variable-value を見ると、共通パターンになっている手続き scan を抽象化するとよい。 scan を 変数 var が見つかった場合は見つけた変数のリストを返し、見つからなかったばあいは ‘() を返すようにする。 各手続きにおいて scan の結果に応じて処理を行わせる。…続きを読む
問題4.11 (define (make-frame variables values) (define (make-frame-iter variables values) (if (null? variables) ‘() (cons (cons (car variables) (car values)) (make-frame-iter (cdr variables) (cdr values…続きを読む
XOOPS WordPress モジュール での ping 送信設定方法のメモ。 modules/wordpress/themes/テーマ名/wp-config-custom.php の "PINGサーバの指定" 部分にサーバ名・パス名・ポート番号を追加していく。 // PINGサーバの指定 $GLOBALS[‘my_pingserver’][0][‘server’]=&quo…続きを読む
問題4.9 "[jfriends:00504] SICP 読書会 第17回議事録" の do の実装を参考にして while を実装してみる。 (define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((while? exp) (eval (while->let exp) env)) ; 省略 (els…続きを読む
問題4.8 名前付き let で書いた Fibonacci 手続きは、 (define (fib n) (let fib-iter ((a 1) (b 0) (count n)) (if (= count 0) b (fib-iter (+ a b) a (- count 1))))) 次の手続きに書き直せる。 (define (fib n) (define (fib-iter a b count…続きを読む
問題4.7 [SICP] 問題4.7 – papamitraの日記 – 個人用SICP勉強グループ を参考にした。 (define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((let*? exp) (eval (let*->nested-lets exp) env)) ; 省略 (else (err…続きを読む
問題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…続きを読む