コンピュータプログラミングの概念・技法・モデル
(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))の第1章(プログラミング概念入門)、1.18(練習問題)、9-c.(記憶域(memory store))を解いてみる。
9-c.(記憶域(memory store))
コード(Emacs)
declare
fun {NewStore}
C Put PutList Get GetList Size SizeList in
C={NewCell nil}
fun {Put N X}
C:=(N|X)|@C
@C
end
fun {Get N}
{GetList @C N}
end
fun {GetList L N}
case L of H|T then
case H of M|X then
if M==N then X else {GetList T N} end
end
else nil end
end
fun {Size}
{SizeList @C}
end
fun {SizeList L}
case L of H|T then
1+{SizeList T}
else 0 end
end
store(put:Put get:Get size:Size)
end
fun {Put S N X}
{S.put N X}
end
fun {Get S N}
{S.get N}
end
fun {Size S}
{S.size}
end
S={NewStore}
{Browse {Put S 2 [22 33]}}
{Browse {Get S 2}}
{Browse {Size S}}
{Browse {Put S 1 100}}
{Browse {Get S 1}}
{Browse {Size S}}
0 コメント:
コメントを投稿