Guest User

Untitled

a guest
Apr 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.90 KB | None | 0 0
  1. module Queue_fun: QUEUE_FUN =
  2. struct
  3.     type 'a t = 'a list
  4.     exception Empty of string
  5.  
  6.     let empty () = []
  7.     let enqueue (v, lst) = lst@[v]
  8.     let dequeue = function
  9.         [] -> raise (Empty "dequeue")
  10.       | _::xs -> xs;;
  11.     let first = function
  12.         [] -> raise (Empty "first")
  13.       | x::_ -> x;;
  14.     let isEmpty lst = lst = []
  15. end;;
  16.  
  17. module Queue_fun2: QUEUE_FUN =
  18. struct
  19.     type 'a t = 'a list * 'a list
  20.     exception Empty of string
  21.  
  22.     let normalize = function
  23.         ([], q) -> (List.rev q, [])
  24.       | q -> q
  25.  
  26.     let empty () = ([], [])
  27.     let enqueue (v,(x1, lst)) = normalize (x1, v::lst)
  28.     let dequeue = function
  29.         (_::xs, q) -> normalize (xs, q)
  30.       | _ -> raise (Empty "dequeue")
  31.     let first = function
  32.         (x::_, _) -> x
  33.       | _ -> raise (Empty "first")
  34.     let isEmpty lst = lst = ([], [])
  35. end;;
  36.  
  37.  
  38. --------------------------
Add Comment
Please, Sign In to add comment