Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module type QUEUE_FUN =
- sig
- type 'a t
- exception Empty of string
- val empty: unit -> 'a t
- val enqueue: 'a * 'a t -> 'a t
- val dequeue: 'a t -> 'a t
- val first: 'a t -> 'a
- val isEmpty: 'a t -> bool
- end;;
- module PairOfListsQueue : QUEUE_FUN =
- struct
- type 'a t = 'a list * 'a list
- exception Empty of string
- let empty () = ([], [])
- let enqueue (element, queue) =
- if(fst queue = []) then (List.rev (element::snd queue),[])
- else (fst queue, element::snd queue)
- let dequeue = function
- | ([], _) -> ([], [])
- | (head :: tail, endOfQueue) -> if(tail = []) then (List.rev endOfQueue,[]) else (tail,endOfQueue)
- let first queue =
- match fst queue with
- | [] -> raise (Empty "module PairOfListsQueue: first")
- | (head :: tail) -> head
- let isEmpty queue =
- fst queue = []
- end;;
Advertisement
Add Comment
Please, Sign In to add comment