#use "A.mli" module PrioQueue = struct type priority = int type char_queue = Empty | Node of priority * char * char_queue * char_queue exception QueueIsEmpty let empty = Empty let rec insert queue prio elt = match queue with Empty -> Node(prio, elt, Empty, Empty) | Node(p, e, left, right) -> if prio <= p then Node(prio, elt, insert right p e, left) else Node(p, e, insert right prio elt, left) end;; module AbstractPrioQueue = (PrioQueue: CharPQueueAbs);;