diff options
Diffstat (limited to 'stdlib/queue.ml')
-rw-r--r-- | stdlib/queue.ml | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/stdlib/queue.ml b/stdlib/queue.ml deleted file mode 100644 index 977a26338c..0000000000 --- a/stdlib/queue.ml +++ /dev/null @@ -1,58 +0,0 @@ -exception Empty - -type 'a queue_cell = - Nil - | Cons of 'a * 'a queue_cell ref - -type 'a t = - { mutable head: 'a queue_cell; - mutable tail: 'a queue_cell } - -let new () = - { head = Nil; tail = Nil } - -let clear q = - q.head <- Nil; q.tail <- Nil - -let add x q = - match q.tail with - Nil -> (* if tail = Nil then head = Nil *) - let c = Cons(x, ref Nil) in - q.head <- c; q.tail <- c - | Cons(_, newtailref) -> - let c = Cons(x, ref Nil) in - newtailref := c; - q.tail <- c - -let peek q = - match q.head with - Nil -> - raise Empty - | Cons(x, _) -> - x - -let take q = - match q.head with - Nil -> - raise Empty - | Cons(x, rest) -> - q.head <- !rest; - begin match !rest with - Nil -> q.tail <- Nil - | _ -> () - end; - x - -let rec length_aux = function - Nil -> 0 - | Cons(_, rest) -> succ (length_aux !rest) - -let length q = length_aux q.head - -let rec iter_aux f = function - Nil -> - () - | Cons(x, rest) -> - f x; iter_aux f !rest - -let iter f q = iter_aux f q.head |