A queue.
import Queue as Q
Q.isEmpty Q.empty == True
Q.toList (Q.enqueue 2 (Q.enqueue 1 Q.empty)) == [ 1, 2 ]
Q.peek (Q.fromList [ 1, 2 ]) == Just 1
Q.dequeue (Q.fromList [ 1, 2, 3 ]) == Just (1, Q.fromList [ 2, 3 ])
Q.toList (Q.fromList [ 1, 2, 3, 4 ]) == [ 1, 2, 3, 4 ]type Queue a
-- Construct
empty : Queue a
fromList : List a -> Queue a
-- Query
isEmpty : Queue a -> Bool
peek : Queue a -> Maybe a
-- Modify
enqueue : a -> Queue a -> Queue a
dequeue : Queue a -> Maybe ( a, Queue a )
-- Convert
toList : Queue a -> List a