diff options
Diffstat (limited to '')
-rw-r--r-- | Invisible.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Invisible.hs b/Invisible.hs new file mode 100644 index 0000000..5d040f7 --- /dev/null +++ b/Invisible.hs @@ -0,0 +1,42 @@ +----------------------------------------------------------------------------- +-- | +-- Module : XMonadContrib.Invisible +-- Copyright : (c) 2007 Andrea Rossato, David Roundy +-- License : BSD-style (see xmonad/LICENSE) +-- +-- Maintainer : andrea.rossato@unibz.it, droundy@darcs.net +-- Stability : unstable +-- Portability : unportable +-- +-- A data type to store the layout state +-- +----------------------------------------------------------------------------- + +module XMonadContrib.Invisible ( + -- * Usage: + -- $usage + Invisible (..) + , whenIJust + ) where + +-- $usage +-- A data type to store the layout state + +data Invisible m a = I (m a) + +instance (Functor m, Monad m) => Read (Invisible m a) where + readsPrec _ s = [(fail "Read Invisible", s)] + +instance Monad m => Show (Invisible m a) where + show _ = "" + +instance (Functor m, Monad m) => Monad (Invisible m) where + return a = I (return a) + m >>= f = m >>= f + +instance (Functor m, Monad m) => Functor (Invisible m) where + fmap f (I x) = I (fmap f x) + +whenIJust :: (Monad m) => Invisible Maybe a -> (a -> m ()) -> m () +whenIJust (I (Just x)) f = f x +whenIJust (I Nothing) _ = return () |