Skip to content

Instantly share code, notes, and snippets.

@leroux
Created August 18, 2013 05:01
Show Gist options
  • Save leroux/6259975 to your computer and use it in GitHub Desktop.
Save leroux/6259975 to your computer and use it in GitHub Desktop.
module Queue where
data Queue a = Queue [a] [a]
deriving (Show, Eq)
emptyQueue :: Queue a
emptyQueue = Queue [] []
push :: a -> Queue a -> Queue a
push x (Queue d e) = Queue d (x:e)
pop :: Queue a -> (a, Queue a)
pop (Queue [] e) = pop $ Queue (reverse e) []
pop (Queue (x:d) e) = (x, Queue d e)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment