From 43b4a8b66edecb41e6d9381f84c7da81c6cb1f80 Mon Sep 17 00:00:00 2001 From: Renzo Carbonara Date: Sat, 8 Apr 2017 18:52:28 +0200 Subject: [PATCH 1/2] Add missing Functor (Free fs) instance --- src/Data/Match/Effects.hs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Data/Match/Effects.hs b/src/Data/Match/Effects.hs index ecd2380..bc082d6 100644 --- a/src/Data/Match/Effects.hs +++ b/src/Data/Match/Effects.hs @@ -30,10 +30,14 @@ transFree = Free ^<< transAlgWith (subSub srep) <<^ getFix transFreeSym :: (fs <: gs) => Algebras (Pure a ': fs) (Free gs a) transFreeSym = Free ^<< transAlgWith (SCons Here (subSub srep)) <<^ getFix +instance (fs <: fs) => Functor (Free fs) where + fmap f = fold ((\(Pure x) -> Free (inn (Pure (f x)))) ::: transFree) . getFix + instance (fs <: fs) => Monad (Free fs) where return = Free . inn . Pure (Free p) >>= f = fold ((\(Pure x) -> f x) ::: transFree) p + instance (Monad (Free fs), Functor (Free fs)) => Applicative (Free fs) where pure = return (<*>) = ap From 1a46340196e7c83caeffb99d0079d584293f982d Mon Sep 17 00:00:00 2001 From: Renzo Carbonara Date: Sat, 8 Apr 2017 18:54:34 +0200 Subject: [PATCH 2/2] Made compatible with GHC 8.0.2. Remove compiler warnings --- mrm.cabal | 3 ++- src/Data/Match/Membership.hs | 14 +++++++++++--- src/Data/Match/Monadic.hs | 2 +- src/Data/Match/Subset.hs | 1 - 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mrm.cabal b/mrm.cabal index f524081..f79caeb 100644 --- a/mrm.cabal +++ b/mrm.cabal @@ -24,6 +24,7 @@ category: Data build-type: Simple extra-source-files: README.md cabal-version: >=1.10 +tested-with: GHC==8.0.2, GHC==7.10.3, GHC==7.8.4 source-repository head type: git @@ -31,7 +32,7 @@ source-repository head library hs-source-dirs: src - build-depends: base >=4.7 && <4.8 + build-depends: base >=4.7 && <5.0 other-extensions: GADTs exposed-modules: Data.Match, Data.ConstrainedList, diff --git a/src/Data/Match/Membership.hs b/src/Data/Match/Membership.hs index 67d43c2..a3eba85 100644 --- a/src/Data/Match/Membership.hs +++ b/src/Data/Match/Membership.hs @@ -1,13 +1,17 @@ {-# LANGUAGE - GADTs + CPP + , GADTs , KindSignatures , DataKinds , TypeOperators , MultiParamTypeClasses , FlexibleInstances - , OverlappingInstances #-} +#if __GLASGOW_HASKELL__ < 710 +{-# LANGUAGE OverlappingInstances #-} +#endif + module Data.Match.Membership ( Elem(..) , Mem(witness) @@ -24,5 +28,9 @@ class Mem f fs where instance Mem f (f ': fs) where witness = Here -instance (Mem f fs) => Mem f (g ': fs) where +instance +#if __GLASGOW_HASKELL__ >= 710 + {-# OVERLAPPABLE #-} +#endif + (Mem f fs) => Mem f (g ': fs) where witness = There witness diff --git a/src/Data/Match/Monadic.hs b/src/Data/Match/Monadic.hs index 4d95682..64b62af 100644 --- a/src/Data/Match/Monadic.hs +++ b/src/Data/Match/Monadic.hs @@ -7,7 +7,7 @@ module Data.Match.Monadic where import Data.Match (Algebras, Match(..), fold, transAlg) import Data.Match.Fix (Fix()) -import Data.Match.Subset ((<:)(..)) +import Data.Match.Subset (type (<:)(..)) import Data.ConstrainedList (TraversableList(..), Traversables(trep)) import Prelude hiding (sequence) diff --git a/src/Data/Match/Subset.hs b/src/Data/Match/Subset.hs index 508cf33..5634b55 100644 --- a/src/Data/Match/Subset.hs +++ b/src/Data/Match/Subset.hs @@ -5,7 +5,6 @@ , TypeOperators , MultiParamTypeClasses , FlexibleInstances - , OverlappingInstances #-} module Data.Match.Subset where