rooq37

Wypieprzone normalize

Dec 4th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. module type QUEUE_FUN =
  2. sig
  3. type 'a t
  4. exception Empty of string
  5. val empty: unit -> 'a t
  6. val enqueue: 'a * 'a t -> 'a t
  7. val dequeue: 'a t -> 'a t
  8. val first: 'a t -> 'a
  9. val isEmpty: 'a t -> bool
  10. end;;
  11.  
  12. module PairOfListsQueue : QUEUE_FUN =
  13. struct
  14. type 'a t = 'a list * 'a list
  15.  
  16. exception Empty of string
  17.  
  18. let empty () = ([], [])
  19.  
  20. let enqueue (element, queue) =
  21. if(fst queue = []) then (List.rev (element::snd queue),[])
  22. else (fst queue, element::snd queue)
  23.  
  24. let dequeue = function
  25. | ([], _) -> ([], [])
  26. | (head :: tail, endOfQueue) -> if(tail = []) then (List.rev endOfQueue,[]) else (tail,endOfQueue)
  27.  
  28. let first queue =
  29. match fst queue with
  30. | [] -> raise (Empty "module PairOfListsQueue: first")
  31. | (head :: tail) -> head
  32.  
  33. let isEmpty queue =
  34. fst queue = []
  35. end;;
Advertisement
Add Comment
Please, Sign In to add comment