Advertisement
karol_dziachan

Queue (list) OCaml

Jan 8th, 2021
2,958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.02 KB | None | 0 0
  1. module type QUEUE_FUN=
  2.     sig
  3.       type 'a queue
  4.       exception Empty of string
  5.       val empty: unit -> 'a queue
  6.       val enqueue: 'a * 'a list -> 'a queue
  7.       val isEmpty: 'a queue -> bool
  8.       val dequeue:  'a queue -> 'a queue
  9.       val first: 'a queue -> 'a
  10.     end;;
  11.  
  12. module Queue : QUEUE_FUN =
  13.     struct
  14.       type 'a queue = 'a list
  15.       exception Empty of string
  16.       let empty() = [];;
  17.       let enqueue(e, q) = q @ [e]
  18.       let isEmpty = function
  19.         h::t -> false
  20.         | [] -> true
  21.       let dequeue = function
  22.         h::t -> t
  23.         | [] -> raise (Empty "module Queue': dequeue")
  24.       let first = function
  25.         h::t -> h
  26.         | [] -> raise (Empty "module Queue': first")
  27.     end;;
  28.  
  29. let q = Queue.empty();;
  30. Queue.isEmpty q;;  
  31. let q = Queue.enqueue(1, k);;
  32. let q = Queue.enqueue(2, k);;
  33. let q = Queue.enqueue(3, k);;
  34. let q = Queue.enqueue(4, k);;
  35. let q = Queue.enqueue(5, k);;
  36. Queue.isEmpty q;;
  37.  
  38.  
  39. Queue.first  q;;
  40. let q = Queue.dequeue q;;
  41. Queue.first q;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement