natskell-0.0.0.1: internal/Plumbing/Queue/API.hs
{-# LANGUAGE GADTs #-}
module Queue.API
( Queue (..)
, QueueItem (..)
) where
import Transformers.Transformers (Transformer (..))
data QueueItem where QueueItem :: Transformer m => m -> QueueItem
instance Transformer QueueItem where
transform (QueueItem item) = transform item
data Queue = Queue
{ enqueue :: QueueItem -> IO (Either String ())
, dequeue :: IO (Either String QueueItem)
, close :: IO ()
, open :: IO ()
}