開発環境
計算機プログラムの構造と解釈[第2版](ハロルド エイブルソン (著)、ジュリー サスマン (著)、ジェラルド・ジェイ サスマン (著)、Harold Abelson (原著)、Julie Sussman (原著)、Gerald Jay Sussman (原著)、和田 英一 (翻訳)、翔泳社、原著: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の第1章(手続きによる抽象の構築)、1.2(手続きとその生成するプロセス)、1.2.4(べき乗)、問題1.18.を取り組んでみる。
その他参考書籍
問題1.18.
コード(Emacs)
(begin (newline) (load "procedures.scm") (define double (lambda (x) (+ x x))) (define halve (lambda (x) (/ x 2))) (define iter (lambda (a b result) (if (= b 0) result (if (even? b) (iter (double a) (halve b) result) (iter a (- b 1) (+ result a)))))) (define * (lambda (a b) (iter a b 0))) (define nums '(0 1 2 3 4 5 6 7 8 9 9)) (for-each (lambda (a) (for-each (lambda (b) (display "(* ") (display a) (display " ") (display b) (display "): ") (display (* a b)) (newline)) nums)) nums) 'done)
入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))
$ ksi < sample18.scm ksi> (* 0 0): 0 (* 0 1): 0 (* 0 2): 0 (* 0 3): 0 (* 0 4): 0 (* 0 5): 0 (* 0 6): 0 (* 0 7): 0 (* 0 8): 0 (* 0 9): 0 (* 0 9): 0 (* 1 0): 0 (* 1 1): 1 (* 1 2): 2 (* 1 3): 3 (* 1 4): 4 (* 1 5): 5 (* 1 6): 6 (* 1 7): 7 (* 1 8): 8 (* 1 9): 9 (* 1 9): 9 (* 2 0): 0 (* 2 1): 2 (* 2 2): 4 (* 2 3): 6 (* 2 4): 8 (* 2 5): 10 (* 2 6): 12 (* 2 7): 14 (* 2 8): 16 (* 2 9): 18 (* 2 9): 18 (* 3 0): 0 (* 3 1): 3 (* 3 2): 6 (* 3 3): 9 (* 3 4): 12 (* 3 5): 15 (* 3 6): 18 (* 3 7): 21 (* 3 8): 24 (* 3 9): 27 (* 3 9): 27 (* 4 0): 0 (* 4 1): 4 (* 4 2): 8 (* 4 3): 12 (* 4 4): 16 (* 4 5): 20 (* 4 6): 24 (* 4 7): 28 (* 4 8): 32 (* 4 9): 36 (* 4 9): 36 (* 5 0): 0 (* 5 1): 5 (* 5 2): 10 (* 5 3): 15 (* 5 4): 20 (* 5 5): 25 (* 5 6): 30 (* 5 7): 35 (* 5 8): 40 (* 5 9): 45 (* 5 9): 45 (* 6 0): 0 (* 6 1): 6 (* 6 2): 12 (* 6 3): 18 (* 6 4): 24 (* 6 5): 30 (* 6 6): 36 (* 6 7): 42 (* 6 8): 48 (* 6 9): 54 (* 6 9): 54 (* 7 0): 0 (* 7 1): 7 (* 7 2): 14 (* 7 3): 21 (* 7 4): 28 (* 7 5): 35 (* 7 6): 42 (* 7 7): 49 (* 7 8): 56 (* 7 9): 63 (* 7 9): 63 (* 8 0): 0 (* 8 1): 8 (* 8 2): 16 (* 8 3): 24 (* 8 4): 32 (* 8 5): 40 (* 8 6): 48 (* 8 7): 56 (* 8 8): 64 (* 8 9): 72 (* 8 9): 72 (* 9 0): 0 (* 9 1): 9 (* 9 2): 18 (* 9 3): 27 (* 9 4): 36 (* 9 5): 45 (* 9 6): 54 (* 9 7): 63 (* 9 8): 72 (* 9 9): 81 (* 9 9): 81 (* 9 0): 0 (* 9 1): 9 (* 9 2): 18 (* 9 3): 27 (* 9 4): 36 (* 9 5): 45 (* 9 6): 54 (* 9 7): 63 (* 9 8): 72 (* 9 9): 81 (* 9 9): 81 => done ksi> $
0 コメント:
コメントを投稿