summaryrefslogtreecommitdiff
blob: 402df007e7df7746486017bedd74d71a8349e53d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
diff --git a/hs/DBus/Connection/Authentication.hs b/hs/DBus/Connection/Authentication.hs
index b909a38..c33d311 100644
--- a/hs/DBus/Connection/Authentication.hs
+++ b/hs/DBus/Connection/Authentication.hs
@@ -25,3 +25,4 @@ module DBus.Connection.Authentication
 import           Prelude hiding (getLine, head)
-import           Control.Monad (liftM)
+import           Control.Applicative
+import           Control.Monad
 import qualified Data.ByteString
@@ -58,2 +59,9 @@ data Auth a = Auth
 
+instance Functor Auth where
+    fmap  = liftM
+
+instance Applicative Auth where
+    pure  = return
+    (<*>) = ap  -- defined in Control.Monad
+
 instance Monad Auth where
diff --git a/hs/DBus/Introspection.hs b/hs/DBus/Introspection.hs
index 96ff4a3..da82812 100644
--- a/hs/DBus/Introspection.hs
+++ b/hs/DBus/Introspection.hs
@@ -29,3 +29,4 @@ module DBus.Introspection
 	) where
-import           Control.Monad ((>=>))
+import           Control.Applicative
+import           Control.Monad
 import           Control.Monad.ST (runST)
@@ -176,2 +177,9 @@ newtype XmlWriter a = XmlWriter { runXmlWriter :: Maybe (a, Text) }
 
+instance Functor XmlWriter where
+    fmap  = liftM
+
+instance Applicative XmlWriter where
+    pure  = return
+    (<*>) = ap  -- defined in Control.Monad
+
 instance Monad XmlWriter where
diff --git a/hs/DBus/Types/Internal.hs b/hs/DBus/Types/Internal.hs
index 7f5d9c5..7c73afe 100644
--- a/hs/DBus/Types/Internal.hs
+++ b/hs/DBus/Types/Internal.hs
@@ -5,2 +5,3 @@
 {-# LANGUAGE IncoherentInstances #-}
+{-# LANGUAGE FlexibleContexts #-}
 
diff --git a/hs/DBus/Util/MonadError.hs b/hs/DBus/Util/MonadError.hs
index 33b51ed..ef01df2 100644
--- a/hs/DBus/Util/MonadError.hs
+++ b/hs/DBus/Util/MonadError.hs
@@ -23,2 +23,6 @@ module DBus.Util.MonadError
 	) where
+
+import Control.Applicative
+import Control.Monad
+
 newtype ErrorM e a = ErrorM { runErrorM :: Either e a }
@@ -30,2 +34,6 @@ instance Functor (ErrorM e) where
 
+instance Applicative (ErrorM e) where
+    pure  = return
+    (<*>) = ap  -- defined in Control.Monad
+
 instance Monad (ErrorM e) where
@@ -41,2 +49,9 @@ newtype ErrorT e m a = ErrorT { runErrorT :: m (Either e a) }
 
+instance Monad m => Functor (ErrorT e m) where
+    fmap  = liftM
+
+instance Monad m => Applicative (ErrorT e m) where
+    pure  = return
+    (<*>) = ap  -- defined in Control.Monad
+
 instance Monad m => Monad (ErrorT e m) where
diff --git a/hs/DBus/Wire/Internal.hs b/hs/DBus/Wire/Internal.hs
index b386eec..512ff1a 100644
--- a/hs/DBus/Wire/Internal.hs
+++ b/hs/DBus/Wire/Internal.hs
@@ -19,3 +19,4 @@
 module DBus.Wire.Internal where
-import Control.Monad (liftM, when, unless)
+import Control.Applicative
+import Control.Monad hiding (void)
 
@@ -96,2 +97,9 @@ newtype Wire s a = Wire
 
+instance Functor (Wire s) where
+    fmap  = liftM
+
+instance Applicative (Wire s) where
+    pure  = return
+    (<*>) = ap  -- defined in Control.Monad
+
 instance Monad (Wire s) where