2016年8月24日水曜日

開発環境

  • OS X El Capitan - Apple (OS)
  • Emacs(Text Editor)
  • Scheme (プログラミング言語)
  • kscheme (ksi)(github) (処理系)

計算機プログラムの構造と解釈[第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.17.を取り組んでみる。

その他参考書籍

問題1.17.

コード(Emacs)

(begin
  (newline)
  (load "procedures.scm")



  (define double (lambda (x) (+ x x)))
  (define halve (lambda (x) (/ x 2)))

  (define n 0)
  (define *
    (lambda (a b)
      (set! n (+ n 1))
      (if (= b 0)
          0
          (if (even? b)
              (* (double a) (halve b))
              (+ a (* a (- b 1)))))))

  (define nums '(1 2 3 4 5 6 7 8 9 10))
  (for-each (lambda (a)
              (for-each (lambda (b)
                          (set! n 0)
                          (display "(* ")
                          (display a)
                          (display " ")
                          (display b)
                          (display "): ")
                          (display (* a b))
                          (display ", ")
                          (display n)
                          (newline))
                        nums))
            nums)
            
'done)

入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))

$ ksi < sample17.scm
ksi> 
(* 1 1): 1, 3
(* 1 2): 2, 7
(* 1 3): 3, 11
(* 1 4): 4, 15
(* 1 5): 5, 23
(* 1 6): 6, 23
(* 1 7): 7, 35
(* 1 8): 8, 31
(* 1 9): 9, 47
(* 1 10): 10, 47
(* 2 1): 2, 3
(* 2 2): 4, 7
(* 2 3): 6, 11
(* 2 4): 8, 15
(* 2 5): 10, 23
(* 2 6): 12, 23
(* 2 7): 14, 35
(* 2 8): 16, 31
(* 2 9): 18, 47
(* 2 10): 20, 47
(* 3 1): 3, 3
(* 3 2): 6, 7
(* 3 3): 9, 11
(* 3 4): 12, 15
(* 3 5): 15, 23
(* 3 6): 18, 23
(* 3 7): 21, 35
(* 3 8): 24, 31
(* 3 9): 27, 47
(* 3 10): 30, 47
(* 4 1): 4, 3
(* 4 2): 8, 7
(* 4 3): 12, 11
(* 4 4): 16, 15
(* 4 5): 20, 23
(* 4 6): 24, 23
(* 4 7): 28, 35
(* 4 8): 32, 31
(* 4 9): 36, 47
(* 4 10): 40, 47
(* 5 1): 5, 3
(* 5 2): 10, 7
(* 5 3): 15, 11
(* 5 4): 20, 15
(* 5 5): 25, 23
(* 5 6): 30, 23
(* 5 7): 35, 35
(* 5 8): 40, 31
(* 5 9): 45, 47
(* 5 10): 50, 47
(* 6 1): 6, 3
(* 6 2): 12, 7
(* 6 3): 18, 11
(* 6 4): 24, 15
(* 6 5): 30, 23
(* 6 6): 36, 23
(* 6 7): 42, 35
(* 6 8): 48, 31
(* 6 9): 54, 47
(* 6 10): 60, 47
(* 7 1): 7, 3
(* 7 2): 14, 7
(* 7 3): 21, 11
(* 7 4): 28, 15
(* 7 5): 35, 23
(* 7 6): 42, 23
(* 7 7): 49, 35
(* 7 8): 56, 31
(* 7 9): 63, 47
(* 7 10): 70, 47
(* 8 1): 8, 3
(* 8 2): 16, 7
(* 8 3): 24, 11
(* 8 4): 32, 15
(* 8 5): 40, 23
(* 8 6): 48, 23
(* 8 7): 56, 35
(* 8 8): 64, 31
(* 8 9): 72, 47
(* 8 10): 80, 47
(* 9 1): 9, 3
(* 9 2): 18, 7
(* 9 3): 27, 11
(* 9 4): 36, 15
(* 9 5): 45, 23
(* 9 6): 54, 23
(* 9 7): 63, 35
(* 9 8): 72, 31
(* 9 9): 81, 47
(* 9 10): 90, 47
(* 10 1): 10, 3
(* 10 2): 20, 7
(* 10 3): 30, 11
(* 10 4): 40, 15
(* 10 5): 50, 23
(* 10 6): 60, 23
(* 10 7): 70, 35
(* 10 8): 80, 31
(* 10 9): 90, 47
(* 10 10): 100, 47
=> done
ksi> $

0 コメント:

コメントを投稿