2015-12-17から1日間の記事一覧
;; 評価順によらず,左から右に評価する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))))) ;; 右から左…
smartparens-modeをアップデートしたらgauche-modeでシングルクオート'が補完されて''になってしまいました. 以前はsmartparens.elの該当箇所, (defcustom sp-lisp-modes '(cider-repl-mode clojure-mode clojurec-mode clojurescript-mode clojurex-mode …
(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…
(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…
なかなかテスト通らなくて困りました. 結局iLを書く位置をvCの次にしたら動きました. 元々そこにはdvCがあって, (scale-stream iL (/ -1 C)))がiLの初期化前に行われたのが原因でした. (define (RLC R L C dt) (lambda (vC0 iL0) (define vC (integral (…
(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版作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・…
問題文のまま (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)
ループのあるシステムで使えるようにintegrandをdelayed-integrandにする. integralを呼び出す時の第一引数にはdelayをつける (define (integral integrand initial-value dt) (cons-stream initial-value (if (stream-null? integrand) the-empty-stream (…
前回のデータと比べて平均化する. (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 …
バグを探す問題 (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)))) ;…
last-valueを取る代わりにmapのargstreamsの二つ目に一回分遅らせたsense-dataをとればいい. そうすれば今の値と前回の値を比べて零交差だったかをsign-change-detectorで判定できる. (define (make-zero-crossings input-stream last-value) (cons-stream…
問題文と図の通りに. (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…