2006-06-07から1日間の記事一覧

3.3.4 A Simulator for Digital Circuits

論理回路をシミュレート。 導線(wire)同士を関数で繋ぐ感じ。 入力側のwireの持つ値(導線の信号)が変化したときに関数を呼び出して、出力側のwireの信号を変化させる。 その際発生する遅延もシミュレートする。 時間軸を一列にとっておいて、after-delayとい…

3.3.3 Representing Tables

テーブル、連想リスト。 3.24 (same-key?を指定できるテーブル) (define (make-table same-key?) (let ((local-table (list '*table*))) (define (assoc key records) (cond ((null? records) #f) ((same-key? key (caar records)) (car records)) (else (as…

3.3.2 Representing Queues

(define (front-ptr queue) (car queue)) (define (rear-ptr queue) (cdr queue)) (define (set-front-ptr! queue item) (set-car! queue item)) (define (set-rear-ptr! queue item) (set-cdr! queue item)) (define (empty-queue? queue) (null? (front-pt…

3.3.1 Mutable List Structure

3.12 (define x (list 'a 'b)) (define y (list 'c 'd)) (define z (append x y)) z ; => (a b c d) (cdr x) ; => (b) (define w (append! x y)) w ; => (a b c d) (cdr x) ; => (b c d) 3.13 (define (last-pair x) (if (null? (cdr x)) x (last-pair (cdr …