2015年3月12日木曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(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キュー)

  1. 空のキューから要素を削除しようとすると、q(~1 _|_ _|_)となる。削除された要素は_(み束縛)となる。

  2. 要素を持つキューが空かどうか調べる場合、問題の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 コメント:

コメントを投稿