Description: Disable some plugins
 Not all plugins are very useful, and some pull in a lot of dependencies.
 Disable these. Also implement random in Lambdabot.Utils more naively.
Author: Joachim Breitner <nomeata@debian.org>

--- a/lambdabot.cabal
+++ b/lambdabot.cabal
@@ -77,7 +77,7 @@
                         Lambdabot.Plugin.Check
                         Lambdabot.Plugin.Check.ShowQ
                         Lambdabot.Plugin.Compose
-                        Lambdabot.Plugin.Dice
+                        --Lambdabot.Plugin.Dice
                         Lambdabot.Plugin.Dict
                         Lambdabot.Plugin.Djinn
                         Lambdabot.Plugin.Dummy
@@ -98,20 +98,20 @@
                         Lambdabot.Plugin.Localtime
                         Lambdabot.Plugin.Log
                         Lambdabot.Plugin.More
-                        Lambdabot.Plugin.Numberwang
+                        --Lambdabot.Plugin.Numberwang
                         Lambdabot.Plugin.OEIS
                         Lambdabot.Plugin.OfflineRC
                         Lambdabot.Plugin.Pl
                         Lambdabot.Plugin.Pointful
                         Lambdabot.Plugin.Poll
                         Lambdabot.Plugin.Pretty
-                        Lambdabot.Plugin.Quote
+                        --Lambdabot.Plugin.Quote
                         Lambdabot.Plugin.Search
                         Lambdabot.Plugin.Seen
                         Lambdabot.Plugin.Slap
                         Lambdabot.Plugin.Source
                         Lambdabot.Plugin.Spell
-                        Lambdabot.Plugin.Stats
+                        --Lambdabot.Plugin.Stats
                         Lambdabot.Plugin.System
                         Lambdabot.Plugin.Tell
                         Lambdabot.Plugin.Ticker
@@ -161,17 +161,17 @@
                         dependent-map           == 0.1.*,
                         dependent-sum           == 0.2.*,
                         dependent-sum-template  >= 0.0.0.1,
-                        dice                    >= 0.1,
+                        --dice                    >= 0.1,
                         directory               >= 1.1,
                         edit-distance           >= 0.2,
                         filepath                >= 1.3,
                         haskeline               >= 0.7,
                         haskell-src-exts        >= 1.14.0,
-                        hstatsd                 >= 0.1,
+                        --hstatsd                 >= 0.1,
                         hslogger                >= 1.2.1,
                         HTTP                    >= 4000,
                         lifted-base             >= 0.2,
-                        misfortune              >= 0.1,
+                        --misfortune              >= 0.1,
                         monad-control           >= 0.3,
                         mtl                     >= 2,
                         network                 >= 2.3.0.13,
@@ -182,8 +182,8 @@
                         process                 >= 1.1,
                         QuickCheck              >= 2,
                         random                  >= 1,
-                        random-fu               >= 0.2,
-                        random-source           >= 0.3,
+                        --random-fu               >= 0.2,
+                        --random-source           >= 0.3,
                         regex-tdfa              >= 1.1,
                         SafeSemaphore           >= 0.9,
                         show                    >= 0.4,
--- a/main/Modules.hs
+++ b/main/Modules.hs
@@ -12,7 +12,7 @@
 import Lambdabot.Plugin.BF
 import Lambdabot.Plugin.Check
 import Lambdabot.Plugin.Compose
-import Lambdabot.Plugin.Dice
+--import Lambdabot.Plugin.Dice
 import Lambdabot.Plugin.Dict
 import Lambdabot.Plugin.Djinn
 import Lambdabot.Plugin.Dummy
@@ -35,7 +35,7 @@
 import Lambdabot.Plugin.Pointful
 import Lambdabot.Plugin.Poll
 import Lambdabot.Plugin.Pretty
-import Lambdabot.Plugin.Quote
+--import Lambdabot.Plugin.Quote
 import Lambdabot.Plugin.Search
 import Lambdabot.Plugin.Seen
 import Lambdabot.Plugin.Slap
@@ -68,7 +68,7 @@
                     , "bfPlugin"
                     , "checkPlugin"
                     , "composePlugin"
-                    , "dicePlugin"
+                    --, "dicePlugin"
                     , "dictPlugin"
                     , "djinnPlugin"
                     , "dummyPlugin"
@@ -90,7 +90,7 @@
                     , "pointfulPlugin"
                     , "pollPlugin"
                     , "prettyPlugin"
-                    , "quotePlugin"
+                    --, "quotePlugin"
                     , "searchPlugin"
                     , "seenPlugin"
                     , "slapPlugin"
--- a/src/Lambdabot.hs
+++ b/src/Lambdabot.hs
@@ -39,7 +39,7 @@
 import Control.Monad.Reader
 import Control.Monad.State
 import qualified Data.Map as M
-import Data.Random.Source
+--import Data.Random.Source
 import qualified Data.Set as S
 
 ------------------------------------------------------------------------
@@ -173,15 +173,3 @@
 ircPrivmsg' who msg = send $ privmsg who msg
 
 ------------------------------------------------------------------------
-
-monadRandom [d|
-
-    instance MonadRandom LB where
-        getRandomWord8          = LB (lift getRandomWord8)
-        getRandomWord16         = LB (lift getRandomWord16)
-        getRandomWord32         = LB (lift getRandomWord32)
-        getRandomWord64         = LB (lift getRandomWord64)
-        getRandomDouble         = LB (lift getRandomDouble)
-        getRandomNByteInteger n = LB (lift (getRandomNByteInteger n))
-
- |]
--- a/src/Lambdabot/Util.hs
+++ b/src/Lambdabot/Util.hs
@@ -24,7 +24,7 @@
 import Control.Monad.Trans
 import Data.Char
 import Data.List
-import Data.Random
+import System.Random (randomRIO)
 
 ------------------------------------------------------------------------
 
@@ -57,7 +57,10 @@
 
 -- | Pick a random element of the list.
 random :: MonadIO m => [a] -> m a
-random = io . sample . randomElement
+random = io . pick
+  where
+    pick :: [a] -> IO a
+    pick xs = randomRIO (0, length xs - 1) >>= return . (xs !!)
 
 ------------------------------------------------------------------------
 
