File tree Expand file tree Collapse file tree 1 file changed +34
-2
lines changed
Expand file tree Collapse file tree 1 file changed +34
-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"
24
35-----------------------------------------------------------------------------
46-- |
3032module Data.IntMap.Merge.Internal where
3133
3234import Prelude hiding (min , max )
33- import Data.Functor.Identity (Identity , runIdentity )
3435
3536import Data.IntMap.Internal
3637
38+ #if MIN_VERSION_base (4,8,0)
39+ import Data.Functor.Identity (Identity , runIdentity )
40+ #else
41+ import Control.Applicative (Applicative (.. ))
42+ #endif
43+
44+ #if __GLASGOW_HASKELL__ >= 708
45+ import Data.Coerce
46+ #endif
47+
48+
49+ #if MIN_Version_base (4,8,0)
50+ -- | The identity type.
51+ newtype Identity a = Identity { runIdentity :: a }
52+
53+ #if __GLASGOW_HASKELL__ >= 708
54+ instance Functor Identity where
55+ fmap = coerce
56+ instance Applicative Identity where
57+ (<*>) = coerce
58+ pure = Identity
59+ #else
60+ instance Functor Identity where
61+ fmap f (Identity a) = Identity (f a)
62+ instance Applicative Identity where
63+ Identity f <*> Identity x = Identity (f x)
64+ pure = Identity
65+ #endif
66+ #endif
67+
68+
3769-- | A tactic for dealing with keys present in one map but not the other in
3870-- 'merge' or 'mergeA'.
3971--
You can’t perform that action at this time.
0 commit comments