2014年9月29日月曜日

開発環境

計算機プログラムの構造と解釈[第2版](ハロルド エイブルソン (著)、ジュリー サスマン (著)、ジェラルド・ジェイ サスマン (著)、Harold Abelson (原著)、Julie Sussman (原著)、Gerald Jay Sussman (原著)、和田 英一 (翻訳)、翔泳社、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の4(超言語的抽象)、4.2(Scheme の変形 - 遅延評価)、4.2.2(遅延評価の解釈系)、評価器の修正、サンクの表現、問題 4.27.を解いてみる。

その他参考書籍

問題 4.27.

(define w (id (id 10)))
# 一番左のidが評価されて、countは1になる。
# wには (id 10)が代入される
;;; L-EVAL input:
count
;;; L-Eval value:
1

;;; L-Eval input:
w
# (id 10)が評価されて10、countは2になる

;;; L-Eval value:
10

;;; L-Eval input:
count
;;; L-Eval output:
2

確認。

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

$ ./lazy_evaluator_without_analyzer.scm


;;; L-Eval input:
(define count 0)

;;; L-Eval value:
ok

;;; L-Eval input:
(define (id x)
  (set! count (+ count 1))
  x)


;;; L-Eval value:
ok

;;; L-Eval input:
(define w (id (id 10)))

;;; L-Eval value:
ok

;;; L-Eval input:
count

;;; L-Eval value:
1

;;; L-Eval input:
w

;;; L-Eval value:
10

;;; L-Eval input:
count

;;; L-Eval value:
2

;;; L-Eval input:
(exit)
$

0 コメント:

コメントを投稿