listToQueue, queueToList
) where
-#ifdef __HADDOCK__
-import Prelude
-#endif
+import Prelude -- necessary to get dependencies right
+import Data.Typeable
-- | The type of FIFO queues.
data Queue a = Q [a] [a] [a]
+#include "Typeable.h"
+INSTANCE_TYPEABLE1(Queue,queueTc,"Queue")
+
-- Invariants for Q xs ys xs':
-- length xs = length ys + length xs'
-- xs' = drop (length ys) xs -- in fact, shared (except after fmap)