コンピュータプログラミングの概念・技法・モデル
(IT Architect' Archive
クラシックモダン・コンピューティング6)
(IT Architects’Archive CLASSIC MODER)
(翔泳社)
セイフ・ハリディ (著), ピーター・ヴァン・ロイ (著)
Peter Van-Roy (著), Seif Haridi (著), 羽永 洋 (翻訳)
原書: Concepts, Techniques,
and Models of Computer Programming
開発環境
- OS X Yosemite - Apple (OS)
- Emacs (Text Editor)
- Oz (プログラミング言語)
- Mozartプログラミングシステム(Mozart 2) (実装)
コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)(セイフ・ハリディ (著)、ピーター・ヴァン・ロイ (著)、Peter Van-Roy (著)、 Seif Haridi (著)、羽永 洋 (翻訳) 、翔泳社、原書: Concepts, Techniques, and Models of Computer Programming(CTM))の第部(一般的計算モデル)、第2章(宣言的計算モデル)、2.9(練習問題)、2.(文脈的環境)を解いてみる。
2.(文脈的環境)
- 呼び出し前
([{MulByN A B}, {MulByN -> m, A -> a, B -> x1, N -> n}], {m = (proc {$ X Y} Y=N*X end, {N -> n}), a = 10, x1, n = 3})
- 手続き呼び出しを実行、呼び出し後
([Y=N*X, {X -> a, Y -> x1, N -> n}] {m = (proc {$ X Y} Y=N*X end, {N -> n}), a = 10, x1, n = 3})
-
([], {m = (proc {$ X Y} Y=N*X end, {N -> n}), a = 10, x1 = 30, n = 3})
次のコードについて考える。
コード(Emacs)
declare MulByN N in
N=3
proc {MulByN X ?Y}
Y=N*X
end
local A B in
A=10
{MulByN A B}
{Browse B}
local N in
N=10
{MulByN A B}
{Browse B}
end
end
この時、手続き本体の実行で、写像 N -> 3がその環境に追加された場合、
- 呼び出し前
([{MulByN A B}, {MulByN -> m, A -> a, B -> x1, N -> n'}], {m = (proc {$ X Y} Y=N*X end, {N -> n}), n' = 10, a = 10, x1, n = 3, })
- 手続き呼び出しを実行、呼び出し後
([Y=N*X, {X -> a, Y -> x1, N -> n'}] {m = (proc {$ X Y} Y=N*X end, {N -> n}), n' = 10, a = 10, x1, n = 3})
-
([], {m = (proc {$ X Y} Y=N*X end, {N -> n}), n' = 10, a = 10, x1 = 30, n = 3})
追加されなかった場合、
- 呼び出し前
([{MulByN A B}, {MulByN -> m, A -> a, B -> x1, N -> n'}], {m = (proc {$ X Y} Y=N*X end, ∅), n' = 10, a = 10, x1, n = 3, })
- 手続き呼び出しを実行、呼び出し後
([Y=N*X, {X -> a, Y -> x1, N -> n'}] {m = (proc {$ X Y} Y=N*X end, ∅), n' = 10, a = 10, x1, n = 3})
-
([], {m = (proc {$ X Y} Y=N*X end, ∅), n' = 10, a = 10, x1 = 100, n = 3})
よって、写像 N -> 3を環境に追加するステップが必要。
0 コメント:
コメントを投稿