aboutsummaryrefslogtreecommitdiff
path: root/Lazymail.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Lazymail.hs')
-rw-r--r--Lazymail.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lazymail.hs b/Lazymail.hs
index 9347b2e..70a6b96 100644
--- a/Lazymail.hs
+++ b/Lazymail.hs
@@ -6,3 +6,21 @@
-
-}
+module Lazymail where
+
+import Control.Monad.Reader
+import Control.Monad.State
+
+import Config(LazymailConfig, customConfig)
+import State(LazymailState, initialState)
+
+{- Lazymail monad is a ReaderT around a StateT with IO at the bottom of the
+ - stack.
+ -}
+type Lazymail = ReaderT LazymailConfig (StateT LazymailState IO)
+
+run :: Lazymail a -> IO (a, LazymailState)
+run k =
+ let config = customConfig
+ state = initialState
+ in runStateT (runReaderT k config) state \ No newline at end of file
nihil fit ex nihilo