packages feed

algebraic-classes 0.6 → 0.7

raw patch · 4 files changed

+22/−19 lines, 4 filesdep ~basedep ~sybdep ~template-haskellPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, syb, template-haskell

API changes (from Hackage documentation)

- Data.Algebra.Internal: instance (GHC.Base.Monoid m, Data.Algebra.Internal.Class f b) => Data.Algebra.Internal.Algebra f (Control.Applicative.Const m b)
+ Data.Algebra: type family Class f :: * -> Constraint;
+ Data.Algebra: }
+ Data.Algebra.Internal: instance (GHC.Base.Monoid m, Data.Algebra.Internal.Class f b) => Data.Algebra.Internal.Algebra f (Data.Functor.Const.Const m b)
+ Data.Algebra.Internal: type family Class f :: * -> Constraint;
+ Data.Algebra.Internal: }
- Data.Algebra: class Traversable f => AlgebraSignature f where type family Class f :: * -> Constraint
+ Data.Algebra: class Traversable f => AlgebraSignature f where type Class f :: * -> Constraint where {
- Data.Algebra.Internal: class Traversable f => AlgebraSignature f where type family Class f :: * -> Constraint
+ Data.Algebra.Internal: class Traversable f => AlgebraSignature f where type Class f :: * -> Constraint where {

Files

CHANGELOG view
@@ -1,3 +1,9 @@+0.6 -> 0.7+- Update for GHC 7.10+  - Updated to base-4.9.0.0+  - Updated to template-haskell-2.11.0.0+  - Updated to syb-0.6+ 0.5.2 -> 0.6 - Update for GHC 7.10   - Updated to base-4.8.0.0
Data/Algebra/TH.hs view
@@ -28,7 +28,7 @@ import Control.Arrow ((***)) import Data.Monoid (Endo(..)) -import Data.Maybe (catMaybes)+import Data.Maybe (catMaybes, fromMaybe) import Data.Char (isAlpha) import Language.Haskell.TH import Data.Generics (Data, everywhere, mkT)@@ -58,8 +58,9 @@       (SigD nm (ForallT [tv'] _ tp)) -> do         let tvn' = tvName tv'         dec <- reify nm+        fty <- fromMaybe defaultFixity <$> reifyFixity nm         case dec of-          ClassOpI _ _ _ fty ->+          ClassOpI _ _ _ ->             return $ case buildOperation tvn' tp of               Just (ar, mkCon) ->                 let opName = changeName addPrefix nm@@ -155,13 +156,13 @@           (FunD fName [Clause (map VarP args) (NormalB (AppE (VarE 'algebra) (foldl (\e arg -> AppE e (VarE arg)) (ConE opName) args))) []])           snd mgiven       | OperationTH fName opName ar _ _ <- operations s, let mgiven = lookup (nameBase fName) givenLU, let args = mkArgList ar ]-  (++ [InstanceD ctx (AppT (ConT className) typeName) impl]) <$>+  (++ [InstanceD Nothing ctx (AppT (ConT className) typeName) impl]) <$>     if addSignature then deriveSignature className else return []  buildSignatureDataType :: SignatureTH -> [Dec] buildSignatureDataType s =-  [DataD [] (signatureName s) [PlainTV (typeVarName s)] (constructor <$> operations s)-    [''Functor, ''Foldable, ''Traversable, ''Eq, ''Ord]]+  [DataD [] (signatureName s) [PlainTV (typeVarName s)] Nothing (constructor <$> operations s)+    (map ConT [''Functor, ''Foldable, ''Traversable, ''Eq, ''Ord])]  signatureInstances :: Name -> SignatureTH -> [Dec] signatureInstances nm s = [asInst, showInst, sigTFInst]@@ -172,7 +173,7 @@     asClauses =       [ Clause [ConP opName (map VarP args)] (NormalB (foldl (\e arg -> AppE e (VarE arg)) (VarE fName) args)) []       | OperationTH fName opName ar _ _ <- operations s, let args = mkArgList ar ]-    asInst = InstanceD [] (AppT (ConT ''AlgebraSignature) signature) [typeInst, FunD 'evaluate asClauses]+    asInst = InstanceD Nothing [] (AppT (ConT ''AlgebraSignature) signature) [typeInst, FunD 'evaluate asClauses]     showsPrecClauses =       [ Clause [VarP d, ConP opName (map VarP args)] (NormalB $ createShowsPrec d (nameBase fName) prec args) []       | OperationTH fName opName ar _ (Fixity prec _) <- operations s, let args = mkArgList ar, let d = mkName "d" ]@@ -190,12 +191,12 @@     addArg expr arg =       Just $ InfixE expr (VarE '(.)) (Just (InfixE (Just (AppE (VarE 'showChar) (LitE (CharL ' ')))) (VarE '(.))         (Just (AppE (AppE (VarE 'showsPrec) (LitE (IntegerL 11))) (VarE arg)))))-    showInst = InstanceD [AppT (ConT ''Show) a] (AppT (ConT ''Show) (AppT signature a)) [FunD 'showsPrec showsPrecClauses]+    showInst = InstanceD Nothing [AppT (ConT ''Show) a] (AppT (ConT ''Show) (AppT signature a)) [FunD 'showsPrec showsPrecClauses]     a = VarT $ mkName "a"  buildOperation :: Name -> Type -> Maybe (Int, Name -> Con) buildOperation nm (VarT nm') = if nm == nm' then Just (0, \opName -> NormalC opName []) else Nothing-buildOperation nm (AppT (AppT ArrowT h) t) = ((+1) *** fmap (prependC (NotStrict, h))) <$> buildOperation nm t+buildOperation nm (AppT (AppT ArrowT h) t) = ((+1) *** fmap (prependC h)) <$> buildOperation nm t buildOperation _ _ = Nothing  changeName :: (String -> String) -> Name -> Name@@ -219,8 +220,8 @@ rename a b c | a == c = b rename _ _ t = t -prependC :: (Strict, Type) -> Con -> Con-prependC st (NormalC nm sts) = NormalC nm (st:sts)+prependC :: Type -> Con -> Con+prependC st (NormalC nm sts) = NormalC nm ((Bang NoSourceUnpackedness NoSourceStrictness, st):sts)  tvName :: TyVarBndr -> Name tvName (PlainTV nm) = nm
algebraic-classes.cabal view
@@ -1,5 +1,5 @@ name:                algebraic-classes-version:             0.6+version:             0.7 synopsis:            Conversions between algebraic classes and F-algebras. description:         Algebraic classes are type classes where all the methods return a value of the same type, which is also the class parameter.                      Examples from @base@ are @Num@ and @Monoid@.@@ -36,10 +36,10 @@     Data.Algebra.Internal    build-depends:-      base == 4.8.*-    , syb == 0.4.*-    , template-haskell == 2.10.0.*+      base == 4.9.*+    , syb == 0.6.*+    , template-haskell == 2.11.0.*  source-repository head   type:     git-  location: git://github.com/sjoerdvisscher/algebraic-functors.git+  location: git://github.com/sjoerdvisscher/algebraic-classes.git
examples/Fractional.hs view
@@ -2,11 +2,7 @@ {-# LANGUAGE TemplateHaskell, TypeFamilies, DeriveTraversable, RankNTypes #-}  import Data.Algebra-import Data.Algebra.TH import Data.Ratio--deriveSignature ''Num-deriveSignature ''Fractional  deriveInstance [t| forall m n. (Num m, Num n) => Num (m, n) |] deriveInstance [t| forall m n. (Fractional m, Fractional n) => Fractional (m, n) |]