2017-01-01から1年間の記事一覧

SICPゼミ第56回

練習問題4.32 お気持ち.まあ便利だよね色々面倒なこと気にしなくてよくなるし. 練習問題4.33 クォート式を評価した結果が元々の意味でのリストだったら,今回の意味でのリストに変換する関数をかませるよう評価機を変える. 練習問題4.34 無限リストは先頭…

SICPゼミ第55回

練習問題4.30 a . (for-each (lambda (x) (newline) (display x)) (list 57 321 88)) を呼ぶ。 問題になっているのは eval-sequence に食われる begin 節、すなわち (define (for-each proc items) (if (null? items) 'done (begin (proc (car items )) (for…

SICPゼミ第54回

練習問題4.28 演算子がevalの中で評価されない(遅延されてしまう)場合,すなわち複合手続きが引数として呼ばれた場合,演算子を評価しないままthunkがそのまま返ってきてしまう事がある. 例えば (define (g x) (+ x 1)) (define (f g x) (g x)) とした場合…

SICPゼミ第53回

練習問題4.27 外側の id については application なので評価がされており (引数の (id 10) については評価されずに残っている)、すなわち w の定義時点で count は一度だけインクリメントされていることになる。 答えは 1, 10, 2 となる。

SICPゼミ第52回

練習問題4.25 (define (factorial n) (unless (= n 1) (* n (factorial (- n 1))) 1)) 適用順序言語では先に unless の引数がすべて評価される、すなわち (factorial 0) の評価が先に行われてしまうため、無限ループに陥って停止しない。 正規順序言語では引…

SICPゼミ第51回

ご無沙汰しております 練習問題4.23 Alyssaの解析器 (define (analyze-sequence exps) (define (execute-sequence procs env) (cond (( null? (cdr procs )) ((car procs) env)) (else ((car procs) env) (execute-sequence (cdr procs) env )))) (let (( pr…

SICPゼミ第50回

練習問題4.22 (define (analyze-let exp) (analyze (let->combination exp))) (define (let->combination exp) (let ((defs (let-defs exp))) ((make-lambda (let-variable-from-defs defs) (let-body exp)) (let-defbody-from-defs defs)))) (define (let-d…

SICPゼミ第49回

練習問題4.21 a ((lambda (n) ((lambda (fib) (fib fib n)) (lambda (ft k) (if (< k 2) 1 (+ (ft ft (- k 2)) (ft ft (- k 1))))))) 5) by tube b (define (f x) ((lambda (even? odd?) (even? even? odd? x)) (lambda (ev? od? n) (if (= n 0) true (od? e…

SICPゼミ第48回

練習問題4.20b by チューブワアアアァァァァム

SICPゼミ第47回

練習問題4.20 4.18 と一緒なのでパス。

SICPゼミ第46回

練習問題4.18 (define (solve f y0 dt) (define y (integral (delay dy) y0 dt)) (define dy (stream-map f y)) y) (define (solve_ f y0 dt) (let ((y '*hoge*) (dy '*hoge*)) (let ((a (integral (delay dy) y0 dt)) (b (stream-map f y))) (set! y a) (se…

SICPゼミ第45回

練習問題4.16 (define (lookup-variable-value var env) (define (env-loop env) (define (scan vars vals) (cond (( null? vars) (env-loop (enclosing-environment env ))) ((eq? var (car vars )) (if (eq? (car vals) '*unassigned*) (error "Unassigned…

SICPゼミ第44回

練習問題4.14 なんかタグとかがうまく処理されないと思う。 by tube 練習問題4.15 ネゲートして自分を突っ込む。終わり。 by tube

SICPゼミ第43回

練習問題4.11 (define (make-frame variables values) (if (= (length variables values)) (if (null? variables) nil (cons (cons (car variables) (car values))) (make-frame (cdr variables) (cdr values))) (if (< (length variables) (length values))…

SICPゼミ第42回

練習問題4.7 (define (let*->nested-lets exp) (let ((defs (car exp)) (body (cdr exp))) (if (null? (cdr defs)) (list 'let (car defs) body) (list 'let (car defs) (let*->nested-lets (pair (cdr defs) body)))))) by dolicas 問題文で言ってる派生式…

SICPゼミ第41回

練習問題4.4 (define (eval-and exp env) (cond ((null? exp) #t) ((null? (cdr exp)) (eval (cdr exp) env)) ((not (eval (car exp) env)) #f) (else (eval-and (cdr exp) env)))) (define (and? exp) (tagged-list? exp 'and)) by dolicas 派生式の方もで…

SICPゼミ第40回

2章はやばいので4章に帰ってきました。 練習問題4.2 applicaionかどうかの判定 (application?) はタグを気にせずペアかどうかしか見ていない.これが最後でないと (define …) みたいなのも適用として扱ってしまうのでおかしくなる. call を使うことにするの…

SICPゼミ第39回

練習問題2.92 係数がy の多項式であるx の多項式と係数がx の多項式であるy の多項式の両方が与えられる問題だと考えるとなかなかえぐいので次回に続く。

SICPゼミ第38回

練習問題2.91 (define (install-polynomial-package) ;; 内部手続き ;; poly の表現 (define (make-poly variable term-list) (cons variable term-list )) (define (variable p) (car p)) (define (term-list p) (cdr p)) (define same-variable? eq?) (def…

SICPゼミ第37回

練習問題2.88 install-polynomial-package内に以下の関数を追加する。 (define (inversion termList) (if (empty-termlist? termList) termList (let ((term (first-term termList))) (if (eq? (type-tag term) 'polynomial) (adjoin-term (make-term (order…