From fc1231ca6e008582fb6a669cb9d0607059e82cdd Mon Sep 17 00:00:00 2001
From: Raúl Benencia <rul@kalgan.cc>
Date: Sat, 24 Aug 2013 12:17:13 -0300
Subject: Lazymail monad

---
 Config.hs   |  2 +-
 Lazymail.hs | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/Config.hs b/Config.hs
index 39e227f..bf35cb1 100644
--- a/Config.hs
+++ b/Config.hs
@@ -32,4 +32,4 @@ defaultConfig = LazymailConfig {
 -- preferences. In a possible future maybe I'll work in a not-so-crappy
 -- config system.
 --
-customConfig = defaultConfig { basePath = "/home/rul/mail/kalgan" }
\ No newline at end of file
+customConfig = defaultConfig { basePath = Just "/home/rul/mail/kalgan" }
\ No newline at end of file
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
-- 
cgit v1.2.3