プログラミングGauche 6.5 簡単なリスト処理 練習問題
プログラミングGaucheの練習問題(p56)を解く。 リストの長さを計算する手続き length。 (define (length lis) (define (iter lis result) (if (null? lis) result (iter (cdr lis) (+ result 1)))) (iter lis 0)) (length ‘(1 2 3 4 5)) gosh> 5 …続きを読む
プログラミングGaucheの練習問題(p56)を解く。 リストの長さを計算する手続き length。 (define (length lis) (define (iter lis result) (if (null? lis) result (iter (cdr lis) (+ result 1)))) (iter lis 0)) (length ‘(1 2 3 4 5)) gosh> 5 …続きを読む
ネストしたリストも全てコピーする deep-copy-list を考える。 ただコピーしただけだと結果を見てもネストしたリストの要素もコピーされているのかよく分からないので、要素を2倍してコピーさせている。 ;; copy-list (define (copy-list lis) (if (not (pair? lis)) lis (cons (* 2 (car lis)) (copy-list …続きを読む
これまで Ubuntu 8.04 の screen で256色表示させることができなかったのが .screenrc での設定の間違いだったようで、以下の設定を加えたら256色表示させることができた。 defbce on term xterm-256color termcapinfo xterm* ‘Co#256:pa#32767:AB=\E[48;5;%dm:AF=\E[38;5;%dm:’
問題3.80 (define (RLC R L C dt) (define (rlc vC0 iL0) (define dvC (scale-stream iL (/ -1 C))) (define diL (add-streams (scale-stream vC (/ 1 L)) (scale-stream iL (- (/ R L))))) (define iL (integral (del…続きを読む
問題3.79 (define (solve-2nd f dt y0 dy0) (define ddy (stream-map f dy y)) (define dy (integral (delay ddy) dy0 dt)) (define y (integral (delay dy) y0 dt)) y) 計算機プログラムの構造と解釈 posted with amazlet at 08.11.…続きを読む
問題3.78 図3.35 をそのまま手続きに書き起こす。 (define (solve-2nd a b dt y0 dy0) (define ddy (add-streams (scale-stream dy a) (scale-stream y b))) (define dy (integral (delay ddy) dy0 dt)) (define y (integral (delay dy…続きを読む
問題3.77 被積分値を先に評価する force の部分はすぐにわかったのだけれど、 integral の再帰部分の第1引数を delay しなければいけないところがわからなかった。 solve 手続きは、本文に記載されているものは Gauche では動作しないので修正が必要となった。 参考 : SICP Exercise 3.77. – 理工系学生の演習日記 (define (int…続きを読む
問題3.76 (define (smooth st) (define (iter st lv) (let ((average (/ (+ (stream-car st) lv) 2.0))) (cons-stream average (iter (stream-cdr st) (stream-car st))))) (iter st (stream-car st))) (define zero-c…続きを読む
問題3.75 Louis の変更した手続きでは平滑化された値(avpt)を次の last-value として渡している。 さらに境界のチェックは平均値同士から算出しないとだめらしい。 したがって修正した make-zero-crossings 手続きは以下のようになる。 (define (make-zero-crossings input-stream last-value last-avpt) …続きを読む
問題3.74 ストリーム sense-data を三角関数を使って仮に表現する。 (define sense-data (stream-map (lambda (x) (sin x)) integers)) (stream-head sense-data 10) gosh> 0.8414709848078965 0.9092974268256817 0.1411200080598672 -0…続きを読む