2014年4月1日火曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の2(データによる抽象の構築)、2.2(階層データ構造と閉包性)、2.2.3(公認インターフェースとしての並び)、並びの演算、問題 2.35.を解いてみる。

その他参考書籍

問題 2.35.

コード(BBEdit, Emacs)

sample.scm

#!/usr/bin/env gosh
;; -*- coding: utf-8 -*-

;; これまでに書いた手続き
(load "./procedures.scm")

(define (count-leaves tree)
  (accumulate + 0 (map (lambda (x)
                         (if (pair? x)
                             (count-leaves x)
                             1))
                       tree)))


(for-each (lambda (tree)
            (print "木: " tree
                   " 葉の数: " (count-leaves tree)))
          (list (list)
                (list 'a)
                (list 'a 'b)
                (list 'a 'b (list 'c 'd))
                (list 'a (list 'b 'c) 'd)
                (list 'a 'b (list 'c 'd))))

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

$ ./sample.scm
79
$ ./sample.scm
木: () 葉の数: 0
木: (a) 葉の数: 1
木: (a b) 葉の数: 2
木: (a b (c d)) 葉の数: 4
木: (a (b c) d) 葉の数: 4
木: (a b (c d)) 葉の数: 4
$

0 コメント:

コメントを投稿