(wat-aro)

生きてます

2015-12-17から1日間の記事一覧

SICP 問題 4.01

;; 評価順によらず,左から右に評価するlist-of-values (define (list-of-values exps env) (if (no-operands? exps) '() (let ((first-eval (eval (first-operand exp) env))) (cons first-eval (list-of-values (rest-operands exps) env))))) ;; 右から左…

gauche-modeでシングルクオートを補完されないようにする

smartparens-modeをアップデートしたらgauche-modeでシングルクオート'が補完されて''になってしまいました. 以前はsmartparens.elの該当箇所, (defcustom sp-lisp-modes '(cider-repl-mode clojure-mode clojurec-mode clojurescript-mode clojurex-mode …

SICP 問題 3.82

(define (random-in-range x1 x2) (+ x1 (random-integer (- x2 x1)))) (define (estimate-integral p x1 x2 y1 y2) (stream-map (lambda (n) (* n (- x2 x1) (- y2 y1))) (monte-carlo (stream-map p (stream-map (lambda (x) (random-in-range x1 x2)) int…

SICP 問題 3.81

(use srfi-19) (define (rand-update x) (modulo (+ (* x 1103515245) 12345) 2147483647)) ;; 命令のストリームを引数にとる (define (rand stream) (define (randoming s) (if (number? s) (random-update (time-nanosecond (current-time))) (random-upda…

SICP 問題 3.80

なかなかテスト通らなくて困りました. 結局iLを書く位置をvCの次にしたら動きました. 元々そこにはdvCがあって, (scale-stream iL (/ -1 C)))がiLの初期化前に行われたのが原因でした. (define (RLC R L C dt) (lambda (vC0 iL0) (define vC (integral (…

SICP 問題 3.79

(define (solve-2nd f dt h0 dy0) (define y (integral (delay dy) y0 dt)) (define dy (integral (delay ddy) dy0 dt)) (define ddy (stream-map f y dy)) y) 計算機プログラムの構造と解釈 第2版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・…

SICP 問題 3.78

問題文のまま (define (solve-2nd a b dt y0 dy0) (define y (integral (delay dy) y0 dt)) (define dy (integral (delay ddy) dy0 dt)) (define ddy (add-streams (scale-stream dy a) (scale-stream y b))) y)

SICP 問題 3.77

ループのあるシステムで使えるようにintegrandをdelayed-integrandにする. integralを呼び出す時の第一引数にはdelayをつける (define (integral integrand initial-value dt) (cons-stream initial-value (if (stream-null? integrand) the-empty-stream (…

SICP 問題 3.76

前回のデータと比べて平均化する. (define (smooth stream) (cons-stream (average (car stream) 0) (stream-map average (stream-cdr stream) stream))) (define (make-zero-crossings sense-data) (let ((smooth-data (smooth sense-data))) (stream-map …

SICP 問題 3.75

バグを探す問題 (define (make-zero-crossings input-stream last-value) (let ((avpt (/ (+ (stream-car input-stream) last-value) 2))) (cons-stream (sign-change-detector avpt last-value) (make-zero-crossings (stream-cdr input-stream) avpt)))) ;…

SICP 問題 3.74

last-valueを取る代わりにmapのargstreamsの二つ目に一回分遅らせたsense-dataをとればいい. そうすれば今の値と前回の値を比べて零交差だったかをsign-change-detectorで判定できる. (define (make-zero-crossings input-stream last-value) (cons-stream…

SICP 問題 3.73

問題文と図の通りに. (define (integral integrand initial-value dt) (define int (cons-stream initial-value (add-streams (scale-stream integrand dt) int))) int) (define (RC R C dt) (lambda (i v0) (add-streams (scale-stream i R) (integral (sc…