問題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…続きを読む
問題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 式 …続きを読む
問題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.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…続きを読む