From 1efc8d4cf8bd16498607693c6f9589f11c1c97d3 Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Fri, 28 Sep 2007 21:01:07 +0200 Subject: Added Invisible to store layout state Invisible is a data type to store information that will be lost when restarting XMonad (the idea came from David Roundy) darcs-hash:20070928190107-32816-ce095723ac5deb5cde50eab871416e3edee1e875.gz --- Invisible.hs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Invisible.hs (limited to 'Invisible.hs') 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 () -- cgit v1.2.3