{-# LANGUAGE BangPatterns #-}
-----------------------------------------------------------------------------
-- | Data control kvantums (phony implementation)
-----------------------------------------------------------------------------
module Data.Control.Kvantum.Void
    ( K
    , create    -- IO K
    , hit       -- K -> IO ()
    , kill      -- K -> IO ()
    , renew     -- K -> IO K
    , join      -- K -> K -> IO K
    ) where

----------------------------------------------

data K = K

{-# INLINE create #-} 
create :: IO K
create = return K

{-# INLINE hit #-} 
hit :: K -> IO ()
hit !_ = return ()

{-# INLINE kill #-} 
kill :: String -> K -> IO ()
kill _ !_ = return ()

{-# INLINE renew #-} 
renew :: String -> K -> IO K
renew _ !k = return k

{-# INLINE join #-} 
join :: K -> K -> IO K
join a b = return (a `seq` b)