2004-08-01 [長年日記]
λ. お昼
純広東家庭料理「嘉賔(KAHIN)」。
λ. Haskellマラソン 2日目
最後にキューの話で議論が白熱していた。なんか良くわからなかったけど。
λ. Queueの話 (1)
結局Prologでの以下のコードに相当するものは実現出来ないのか?、という話だったんだろうか。KL1がどうこうとか言ってたし……
makeQueue(queue(X,X)).
isEmpty(queue([],_)).
enqueue(queue(X,[A|Y]), A, queue(X,Y)).
dequeue(queue([A|X],Y), A, queue(X,Y)).
appendQueue(queue(X,Y), queue(Y,Z), queue(X,Z)).
λ. Queueの話 (2)
あと、キューは代数的仕様記述(Algebraic Specification)が出来ないんじゃないかと言ってしまったが、そうでもないような気がしてきた。以下の記述は代数的仕様記述としてどうなんだろう?
Sorts: E,Q
Operations:
empty: Q
enqueue: Q×E → Q
dequeue: Q→Q
front: Q→E
isEmpty: Q→Bool
Axioms:
isEmpty(empty) = true
isEmpty(enqueue(q,e)) = false
dequeue(enqueue(q,e)) =
if isEmpty(q)
then empty
else enqueue(dequeue(q),e)
front(enqueue(q,e)) =
if isEmpty(q)
then e
else front(q)