File tree 1 file changed +33
-2
lines changed
1 file changed +33
-2
lines changed Original file line number Diff line number Diff line change 1
- {-# LANGUAGE BangPatterns #-}
1
+ {-# LANGUAGE CPP, BangPatterns #-}
2
+
3
+ #include "containers.h"
2
4
3
5
-----------------------------------------------------------------------------
4
6
-- |
30
32
module Data.IntMap.Merge.Internal where
31
33
32
34
import Prelude hiding (min , max )
33
- import Data.Functor.Identity (Identity , runIdentity )
34
35
35
36
import Data.IntMap.Internal
36
37
38
+ #if MIN_VERSION_base (4,8,0)
39
+ import Data.Functor.Identity (Identity , runIdentity )
40
+ #else
41
+ import Control.Applicative (Applicative (.. ))
42
+ #if __GLASGOW_HASKELL__ >= 708
43
+ import Data.Coerce
44
+ #endif
45
+ #endif
46
+
47
+
48
+ #if !MIN_VERSION_base (4,8,0)
49
+ -- | The identity type.
50
+ newtype Identity a = Identity { runIdentity :: a }
51
+
52
+ #if __GLASGOW_HASKELL__ >= 708
53
+ instance Functor Identity where
54
+ fmap = coerce
55
+ instance Applicative Identity where
56
+ (<*>) = coerce
57
+ pure = Identity
58
+ #else
59
+ instance Functor Identity where
60
+ fmap f (Identity a) = Identity (f a)
61
+ instance Applicative Identity where
62
+ Identity f <*> Identity x = Identity (f x)
63
+ pure = Identity
64
+ #endif
65
+ #endif
66
+
67
+
37
68
-- | A tactic for dealing with keys present in one map but not the other in
38
69
-- 'merge' or 'mergeA'.
39
70
--
You can’t perform that action at this time.
0 commit comments