開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: MIT/GNU Scheme
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の3(標準部品化力, オブジェクトおよび状態)、3.3(可変データでのモデル化)、3.3.1(可変リストの構造)、共有と同一の問題 3.19を解いてみる。
その他参考書籍
問題3.19
コード(BBEdit)
sample.scm
(define (last-pair x) (if (null? (cdr x)) x (last-pair (cdr x)))) (define (make-cycle x) (set-cdr! (last-pair x) x) x) (define x1 (cons 'a (cons 'b (cons 'c '())))) (define z (cons 'c '())) (define y (cons 'b z)) (define x2 (cons z y)) (define z (cons 'a '())) (define y (cons z z)) (define x3 (cons y y)) (define x4 (make-cycle (list 'a 'b 'c))) (define (include-cycle? x) (define (iter x y) (cond ((eq? x y) true) ((or (null? x) (null? y) (null? (cdr y))) false) (else (iter (cdr x) (cddr y))))) (if (null? (cdr x)) false (iter (cdr x) (cddr x))))
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
1 ]=> (include-cycle? x1) ;Value: #f 1 ]=> (include-cycle? x2) ;Value: #f 1 ]=> (include-cycle? x3) ;Value: #f 1 ]=> (include-cycle? x4) ;Value: #t
0 コメント:
コメントを投稿