コンピュータプログラミングの概念・技法・モデル
(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))の第部(一般的計算モデル)、第3章(宣言的プログラミング技法)、3.10(練習問題)、14.(FIFOキュー)を解いてみる。
14.(FIFOキュー)
- 空のキューから要素を削除しようとすると、q(~1 _|_ _|_)となる。削除された要素は_(み束縛)となる。
- 要素を持つキューが空かどうか調べる場合、問題のIsEmptyの定義だと、一部束縛されたリストSと束縛されていないリストSを比較することになり、比較できない。
コード(Emacs)
declare NewQueue Delete IsEmpty Y Z
fun {NewQueue} X in q(0 X X) end
fun {Insert Q X}
case Q of q(N S E) then E1 in E=X|E1 q(N+1 S E1) end
end
fun {Delete Q X}
case Q of q(N S E) then S1 in S=X|S1 q(N-1 S1 E) end
end
fun {IsEmpty Q}
case Q of q(N S E) then N==0 end
end
fun {IsEmpty1 Q}
case Q of q(N S E) then S==E end
end
Q1={NewQueue}
{Browse Q1}
Q2={Delete Q1 Y}
{Browse Q1}
{Browse Q2}
{Browse Y}
{Browse {IsEmpty Q1}}
{Browse {IsEmpty1 Q1}}
{Browse {IsEmpty Q2}}
% {Browse {IsEmpty1 Q2}}
Q3={NewQueue}
Q4={Insert Q3 oz}
{Browse Q3}
{Browse Q4}
{Browse {IsEmpty Q4}}
% {Browse {IsEmpty1 Q4}}
Q5={Delete Q4 Z}
{Browse Q5}
{Browse {IsEmpty Q5}}
{Browse {IsEmpty1 Q5}}
0 コメント:
コメントを投稿