algebraic-classes 0 → 0.1
raw patch · 4 files changed
+13/−4 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Algebra: instance Foldable MonoidSignature
+ Data.Algebra: instance Traversable MonoidSignature
- Data.Algebra: class Functor f => AlgebraSignature f where type family Class f :: * -> Constraint
+ Data.Algebra: class Traversable f => AlgebraSignature f where type family Class f :: * -> Constraint
- Data.Algebra.Internal: class Functor f => AlgebraSignature f where type family Class f :: * -> Constraint
+ Data.Algebra.Internal: class Traversable f => AlgebraSignature f where type family Class f :: * -> Constraint
Files
- Data/Algebra.hs +4/−0
- Data/Algebra/Internal.hs +2/−1
- Data/Algebra/TH.hs +5/−1
- algebraic-classes.cabal +2/−2
Data/Algebra.hs view
@@ -6,6 +6,8 @@ , UndecidableInstances , TemplateHaskell , DeriveFunctor+ , DeriveFoldable+ , DeriveTraversable #-} ----------------------------------------------------------------------------- -- |@@ -33,6 +35,8 @@ import Control.Arrow ((&&&)) import Data.Monoid+import Data.Foldable+import Data.Traversable instance Algebra f () where
Data/Algebra/Internal.hs view
@@ -16,8 +16,9 @@ module Data.Algebra.Internal where import GHC.Exts (Constraint)+import Data.Traversable (Traversable) -class Functor f => AlgebraSignature f where+class Traversable f => AlgebraSignature f where -- | The class for which @f@ is the signature. type Class f :: * -> Constraint -- | Translate the operations of the signature to method calls of the class.
Data/Algebra/TH.hs view
@@ -23,9 +23,13 @@ import Data.Algebra.Internal import Control.Applicative+import Data.Foldable (Foldable)+import Data.Traversable (Traversable)+ import Language.Haskell.TH import Data.Generics + data SignatureTH = SignatureTH { signatureName :: Name , typeVarName :: Name@@ -89,7 +93,7 @@ buildSignatureDataType :: SignatureTH -> [Dec] buildSignatureDataType s = let cons = [ NormalC nm (map ((,) NotStrict) ts) | OperationTH _ nm ts <- operations s ]- in [DataD [] (signatureName s) [PlainTV (typeVarName s)] cons [''Functor, ''Show]]+ in [DataD [] (signatureName s) [PlainTV (typeVarName s)] cons [''Functor, ''Foldable, ''Traversable, ''Show]] signatureInstance :: Name -> SignatureTH -> [Dec] signatureInstance nm s = [inst]
algebraic-classes.cabal view
@@ -1,5 +1,5 @@ name: algebraic-classes-version: 0+version: 0.1 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@.@@ -20,7 +20,7 @@ license-file: LICENSE author: Sjoerd Visscher maintainer: sjoerd@w3future.com-category: Data+category: Data, Generics, Math build-type: Simple cabal-version: >=1.8