Advertisement
Guest User

Untitled

a guest
Sep 16th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. functor Double_Stack_Queue_Fn (myStack : Stack) :> Queue =
  3.   struct
  4.     type 'a queue = ('a myStack.stack, 'a myStack.stack)
  5.     exception Empty
  6.     val empty = (myStack.empty, myStack.empty)
  7.     fun enqueue (f, s) e = (myStack.push f e, s)
  8.     fun dequeue (f, s) = case s of
  9.                              [] => if f = myStack.empty then raise Empty else dequeue (myStack.empty, rev f)
  10.                            | x::xs => (x, (f, xs))
  11.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement