トップ «前の日記(2004-07-31) 最新 次の日記(2004-08-02)» 月表示 編集

日々の流転


2004-08-01 [長年日記]

λ. お昼

純広東家庭料理「嘉賔(KAHIN)」。

λ. Haskellマラソン 2日目

最後にキューの話で議論が白熱していた。なんか良くわからなかったけど。

Tags: haskell

λ. 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)