aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2017-09-11 00:32:37 +0200
committerTeddy Wing2017-09-11 00:32:37 +0200
commit356926db7763b21b9c4e1a9fd36e37caa04c25ca (patch)
treeaa7e1eab2f4a2076683250191f459f9cb2b43b51 /src
parent8e5b862c9171af8af7c6c0d0456ae67a9e737633 (diff)
downloadsorbot-356926db7763b21b9c4e1a9fd36e37caa04c25ca.tar.bz2
Create `Bot` type
This type will be used as an application-level monad, enabling us to transmit configuration coming from CLI arguments (`Options`) to any function that needs it. The immediate benefit is that we'll be able to easily transmit the specified language to functions to allow them to use the right translation string.
Diffstat (limited to 'src')
-rw-r--r--src/Bot.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Bot.hs b/src/Bot.hs
new file mode 100644
index 0000000..a661ea4
--- /dev/null
+++ b/src/Bot.hs
@@ -0,0 +1,15 @@
+-- {-# LANGUAGE ConstraintKinds #-}
+-- {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+module Bot
+ ( Bot(..)
+ ) where
+
+import Control.Monad.Reader
+
+import CliOptions (Options)
+
+newtype Bot a = Bot
+ { runBot :: ReaderT Options IO a
+ } deriving (Monad, Functor, Applicative, MonadIO)