packages feed

free-theorems 0.3.2.0 → 0.3.2.1

raw patch · 7 files changed

+16/−590 lines, 7 filesdep −haskell-src-extsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: haskell-src-exts

API changes (from Hackage documentation)

- Language.Haskell.FreeTheorems.BasicSyntax: classFuns :: ClassDeclaration -> [Signature]
- Language.Haskell.FreeTheorems.BasicSyntax: className :: ClassDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: classVar :: ClassDeclaration -> TypeVariable
- Language.Haskell.FreeTheorems.BasicSyntax: dataConName :: DataConstructorDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: dataConTypes :: DataConstructorDeclaration -> [BangTypeExpression]
- Language.Haskell.FreeTheorems.BasicSyntax: dataCons :: DataDeclaration -> [DataConstructorDeclaration]
- Language.Haskell.FreeTheorems.BasicSyntax: dataName :: DataDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: dataVars :: DataDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data BangTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data ClassDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data DataConstructorDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data DataDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data Declaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data FixedTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data NewtypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data Signature
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data TypeClass
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data TypeConstructor
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data TypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Data TypeVariable
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq BangTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq ClassDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq DataConstructorDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq DataDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq Declaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq FixedTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq NewtypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq Signature
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq TypeClass
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq TypeConstructor
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq TypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Eq TypeVariable
- Language.Haskell.FreeTheorems.BasicSyntax: instance Ord Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: instance Ord TypeVariable
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable BangTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable ClassDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable DataConstructorDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable DataDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable Declaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable FixedTypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable NewtypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable Signature
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable TypeClass
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable TypeConstructor
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable TypeDeclaration
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: instance Typeable TypeVariable
- Language.Haskell.FreeTheorems.BasicSyntax: newtypeCon :: NewtypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: newtypeName :: NewtypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: newtypeRhs :: NewtypeDeclaration -> TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: newtypeVars :: NewtypeDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.BasicSyntax: signatureName :: Signature -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: signatureType :: Signature -> TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: superClasses :: ClassDeclaration -> [TypeClass]
- Language.Haskell.FreeTheorems.BasicSyntax: typeName :: TypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.BasicSyntax: typeRhs :: TypeDeclaration -> TypeExpression
- Language.Haskell.FreeTheorems.BasicSyntax: typeVars :: TypeDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.BasicSyntax: unpackIdent :: Identifier -> String
- Language.Haskell.FreeTheorems.BasicSyntax: withoutBang :: BangTypeExpression -> TypeExpression
- Language.Haskell.FreeTheorems.Parser.Hsx: parse :: String -> Parsed [Declaration]
- Language.Haskell.FreeTheorems.Syntax: classFuns :: ClassDeclaration -> [Signature]
- Language.Haskell.FreeTheorems.Syntax: className :: ClassDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: classVar :: ClassDeclaration -> TypeVariable
- Language.Haskell.FreeTheorems.Syntax: dataConName :: DataConstructorDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: dataConTypes :: DataConstructorDeclaration -> [BangTypeExpression]
- Language.Haskell.FreeTheorems.Syntax: dataCons :: DataDeclaration -> [DataConstructorDeclaration]
- Language.Haskell.FreeTheorems.Syntax: dataName :: DataDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: dataVars :: DataDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.Syntax: newtypeCon :: NewtypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: newtypeName :: NewtypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: newtypeRhs :: NewtypeDeclaration -> TypeExpression
- Language.Haskell.FreeTheorems.Syntax: newtypeVars :: NewtypeDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.Syntax: signatureName :: Signature -> Identifier
- Language.Haskell.FreeTheorems.Syntax: signatureType :: Signature -> TypeExpression
- Language.Haskell.FreeTheorems.Syntax: superClasses :: ClassDeclaration -> [TypeClass]
- Language.Haskell.FreeTheorems.Syntax: typeName :: TypeDeclaration -> Identifier
- Language.Haskell.FreeTheorems.Syntax: typeRhs :: TypeDeclaration -> TypeExpression
- Language.Haskell.FreeTheorems.Syntax: typeVars :: TypeDeclaration -> [TypeVariable]
- Language.Haskell.FreeTheorems.Syntax: unpackIdent :: Identifier -> String
- Language.Haskell.FreeTheorems.Syntax: withoutBang :: BangTypeExpression -> TypeExpression
- Language.Haskell.FreeTheorems.Theorems: instance Data DataConstructor
- Language.Haskell.FreeTheorems.Theorems: instance Data Formula
- Language.Haskell.FreeTheorems.Theorems: instance Data Predicate
- Language.Haskell.FreeTheorems.Theorems: instance Data Relation
- Language.Haskell.FreeTheorems.Theorems: instance Data RelationInfo
- Language.Haskell.FreeTheorems.Theorems: instance Data RelationVariable
- Language.Haskell.FreeTheorems.Theorems: instance Data Restriction
- Language.Haskell.FreeTheorems.Theorems: instance Data Term
- Language.Haskell.FreeTheorems.Theorems: instance Data TermVariable
- Language.Haskell.FreeTheorems.Theorems: instance Data UnfoldedClass
- Language.Haskell.FreeTheorems.Theorems: instance Data UnfoldedDataCon
- Language.Haskell.FreeTheorems.Theorems: instance Data UnfoldedLift
- Language.Haskell.FreeTheorems.Theorems: instance Eq Relation
- Language.Haskell.FreeTheorems.Theorems: instance Eq RelationInfo
- Language.Haskell.FreeTheorems.Theorems: instance Eq RelationVariable
- Language.Haskell.FreeTheorems.Theorems: instance Eq Restriction
- Language.Haskell.FreeTheorems.Theorems: instance Eq Term
- Language.Haskell.FreeTheorems.Theorems: instance Eq TermVariable
- Language.Haskell.FreeTheorems.Theorems: instance Typeable DataConstructor
- Language.Haskell.FreeTheorems.Theorems: instance Typeable Formula
- Language.Haskell.FreeTheorems.Theorems: instance Typeable Predicate
- Language.Haskell.FreeTheorems.Theorems: instance Typeable Relation
- Language.Haskell.FreeTheorems.Theorems: instance Typeable RelationInfo
- Language.Haskell.FreeTheorems.Theorems: instance Typeable RelationVariable
- Language.Haskell.FreeTheorems.Theorems: instance Typeable Restriction
- Language.Haskell.FreeTheorems.Theorems: instance Typeable Term
- Language.Haskell.FreeTheorems.Theorems: instance Typeable TermVariable
- Language.Haskell.FreeTheorems.Theorems: instance Typeable UnfoldedClass
- Language.Haskell.FreeTheorems.Theorems: instance Typeable UnfoldedDataCon
- Language.Haskell.FreeTheorems.Theorems: instance Typeable UnfoldedLift
- Language.Haskell.FreeTheorems.Theorems: relationLanguageSubset :: RelationInfo -> LanguageSubset
- Language.Haskell.FreeTheorems.Theorems: relationLeftType :: RelationInfo -> TypeExpression
- Language.Haskell.FreeTheorems.Theorems: relationRightType :: RelationInfo -> TypeExpression
- Language.Haskell.FreeTheorems.ValidSyntax: isStrictDeclaration :: ValidDeclaration -> Bool
- Language.Haskell.FreeTheorems.ValidSyntax: rawDeclaration :: ValidDeclaration -> Declaration
- Language.Haskell.FreeTheorems.ValidSyntax: rawSignature :: ValidSignature -> Signature
+ Language.Haskell.FreeTheorems.BasicSyntax: [classFuns] :: ClassDeclaration -> [Signature]
+ Language.Haskell.FreeTheorems.BasicSyntax: [className] :: ClassDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [classVar] :: ClassDeclaration -> TypeVariable
+ Language.Haskell.FreeTheorems.BasicSyntax: [dataConName] :: DataConstructorDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [dataConTypes] :: DataConstructorDeclaration -> [BangTypeExpression]
+ Language.Haskell.FreeTheorems.BasicSyntax: [dataCons] :: DataDeclaration -> [DataConstructorDeclaration]
+ Language.Haskell.FreeTheorems.BasicSyntax: [dataName] :: DataDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [dataVars] :: DataDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.BasicSyntax: [newtypeCon] :: NewtypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [newtypeName] :: NewtypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [newtypeRhs] :: NewtypeDeclaration -> TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: [newtypeVars] :: NewtypeDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.BasicSyntax: [signatureName] :: Signature -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [signatureType] :: Signature -> TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: [superClasses] :: ClassDeclaration -> [TypeClass]
+ Language.Haskell.FreeTheorems.BasicSyntax: [typeName] :: TypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: [typeRhs] :: TypeDeclaration -> TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: [typeVars] :: TypeDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.BasicSyntax: [unpackIdent] :: Identifier -> String
+ Language.Haskell.FreeTheorems.BasicSyntax: [withoutBang] :: BangTypeExpression -> TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.BangTypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.ClassDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.DataConstructorDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.DataDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.Declaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.FixedTypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.NewtypeDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.Signature
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.TypeClass
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.TypeConstructor
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.TypeDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance Data.Data.Data Language.Haskell.FreeTheorems.BasicSyntax.TypeVariable
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.BangTypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.ClassDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.DataConstructorDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.DataDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.Declaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.FixedTypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.NewtypeDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.Signature
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.TypeClass
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.TypeConstructor
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.TypeDeclaration
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.TypeExpression
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.BasicSyntax.TypeVariable
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Ord Language.Haskell.FreeTheorems.BasicSyntax.Identifier
+ Language.Haskell.FreeTheorems.BasicSyntax: instance GHC.Classes.Ord Language.Haskell.FreeTheorems.BasicSyntax.TypeVariable
+ Language.Haskell.FreeTheorems.Syntax: [classFuns] :: ClassDeclaration -> [Signature]
+ Language.Haskell.FreeTheorems.Syntax: [className] :: ClassDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [classVar] :: ClassDeclaration -> TypeVariable
+ Language.Haskell.FreeTheorems.Syntax: [dataConName] :: DataConstructorDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [dataConTypes] :: DataConstructorDeclaration -> [BangTypeExpression]
+ Language.Haskell.FreeTheorems.Syntax: [dataCons] :: DataDeclaration -> [DataConstructorDeclaration]
+ Language.Haskell.FreeTheorems.Syntax: [dataName] :: DataDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [dataVars] :: DataDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.Syntax: [newtypeCon] :: NewtypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [newtypeName] :: NewtypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [newtypeRhs] :: NewtypeDeclaration -> TypeExpression
+ Language.Haskell.FreeTheorems.Syntax: [newtypeVars] :: NewtypeDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.Syntax: [signatureName] :: Signature -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [signatureType] :: Signature -> TypeExpression
+ Language.Haskell.FreeTheorems.Syntax: [superClasses] :: ClassDeclaration -> [TypeClass]
+ Language.Haskell.FreeTheorems.Syntax: [typeName] :: TypeDeclaration -> Identifier
+ Language.Haskell.FreeTheorems.Syntax: [typeRhs] :: TypeDeclaration -> TypeExpression
+ Language.Haskell.FreeTheorems.Syntax: [typeVars] :: TypeDeclaration -> [TypeVariable]
+ Language.Haskell.FreeTheorems.Syntax: [unpackIdent] :: Identifier -> String
+ Language.Haskell.FreeTheorems.Syntax: [withoutBang] :: BangTypeExpression -> TypeExpression
+ Language.Haskell.FreeTheorems.Theorems: [relationLanguageSubset] :: RelationInfo -> LanguageSubset
+ Language.Haskell.FreeTheorems.Theorems: [relationLeftType] :: RelationInfo -> TypeExpression
+ Language.Haskell.FreeTheorems.Theorems: [relationRightType] :: RelationInfo -> TypeExpression
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.DataConstructor
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.Formula
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.Predicate
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.Relation
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.RelationInfo
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.RelationVariable
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.Restriction
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.Term
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.TermVariable
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.UnfoldedClass
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.UnfoldedDataCon
+ Language.Haskell.FreeTheorems.Theorems: instance Data.Data.Data Language.Haskell.FreeTheorems.Theorems.UnfoldedLift
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.Relation
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.RelationInfo
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.RelationVariable
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.Restriction
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.Term
+ Language.Haskell.FreeTheorems.Theorems: instance GHC.Classes.Eq Language.Haskell.FreeTheorems.Theorems.TermVariable
+ Language.Haskell.FreeTheorems.ValidSyntax: [isStrictDeclaration] :: ValidDeclaration -> Bool
+ Language.Haskell.FreeTheorems.ValidSyntax: [rawDeclaration] :: ValidDeclaration -> Declaration
+ Language.Haskell.FreeTheorems.ValidSyntax: [rawSignature] :: ValidSignature -> Signature
- Language.Haskell.FreeTheorems.Theorems: ForallFunctions :: (Either TermVariable TermVariable) -> (TypeExpression, TypeExpression) -> [Restriction] -> Formula -> Formula
+ Language.Haskell.FreeTheorems.Theorems: ForallFunctions :: Either TermVariable TermVariable -> (TypeExpression, TypeExpression) -> [Restriction] -> Formula -> Formula
- Language.Haskell.FreeTheorems.Theorems: FunAbs :: RelationInfo -> (Either TermVariable TermVariable) -> (TypeExpression, TypeExpression) -> [Restriction] -> Relation -> Relation
+ Language.Haskell.FreeTheorems.Theorems: FunAbs :: RelationInfo -> Either TermVariable TermVariable -> (TypeExpression, TypeExpression) -> [Restriction] -> Relation -> Relation
- Language.Haskell.FreeTheorems.Theorems: FunVar :: RelationInfo -> (Either Term Term) -> Relation
+ Language.Haskell.FreeTheorems.Theorems: FunVar :: RelationInfo -> Either Term Term -> Relation
- Language.Haskell.FreeTheorems.Theorems: UnfoldedClass :: [TypeClass] -> TypeClass -> (Either RelationVariable TermVariable) -> [Formula] -> UnfoldedClass
+ Language.Haskell.FreeTheorems.Theorems: UnfoldedClass :: [TypeClass] -> TypeClass -> Either RelationVariable TermVariable -> [Formula] -> UnfoldedClass

Files

free-theorems.cabal view
@@ -1,5 +1,6 @@+cabal-version:  >= 1.10 name:           free-theorems-version:        0.3.2.0+version:        0.3.2.1 license:        PublicDomain license-file:   LICENSE author:         Sascha Boehme@@ -18,7 +19,6 @@     may be derived in addition to classical equational results. category:       Language tested-with: 	GHC==7.6.1-cabal-version:  >= 1.2.3 build-type:	Simple  extra-source-files:@@ -35,10 +35,11 @@     runtests  library+  default-language: Haskell98   build-depends:       mtl >= 1.0     , haskell-src >= 1.0-    , haskell-src-exts >= 1.13.5 +    -- , haskell-src-exts >= 1.13.5      , pretty >= 1.0.0.0     , containers >= 0.1.0.1   if impl(ghc >= 6.10)@@ -53,7 +54,6 @@       Language.Haskell.FreeTheorems       Language.Haskell.FreeTheorems.Syntax       Language.Haskell.FreeTheorems.Parser.Haskell98-      Language.Haskell.FreeTheorems.Parser.Hsx       Language.Haskell.FreeTheorems.Theorems       Language.Haskell.FreeTheorems.BasicSyntax       Language.Haskell.FreeTheorems.ValidSyntax@@ -75,11 +75,4 @@    hs-source-dirs: src -  extensions:-    DeriveDataTypeable,-    Rank2Types--  if impl(ghc >= 6.10)-    extensions: ScopedTypeVariables-  else -    extensions: PatternSignatures+  ghc-options: -w
src/Language/Haskell/FreeTheorems/Frontend/Error.hs view
@@ -1,4 +1,4 @@-+{-# LANGUAGE FlexibleContexts #-}   -- | Provides error handling functions for checking parser output.
src/Language/Haskell/FreeTheorems/Intermediate.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE FlexibleContexts #-}+ -- | Declares an intermediate data structure along with a function to transform --   type signatures into the intermediate structure. There are also other --   functions working on intermediate structures, namely to retrieve relation@@ -21,6 +23,7 @@ import Data.Generics ( Typeable, Data, everywhere, everything, listify, mkT                      , mkQ, extQ) import qualified Data.Map as Map (Map, empty, lookup, insert, map)+import Data.Maybe (fromMaybe)  import Language.Haskell.FreeTheorems.LanguageSubsets import Language.Haskell.FreeTheorems.Syntax @@ -31,14 +34,6 @@ import Language.Haskell.FreeTheorems.NameStores      ( relationNameStore, typeExpressionNameStore, functionNameStore1, functionNameStore2 ) ---- helper to stay compatible with new Map.lookup for base >= 4.0.0.0-maybeToMonad :: Monad m => Maybe a -> m a-maybeToMonad mb = -    case mb of-    Just x  -> return x-    Nothing -> fail "Data.Map.lookup: Key not found"- ------- Intermediate data structure -------------------------------------------  @@ -132,14 +127,14 @@     -- in the initial type expression, all occurring type variables are bound     -- by type abstraction which are resolved by updating the environment, see     -- below) and create a relation consisting solely of the relation variable-  TypeVar v -> maybeToMonad.Map.lookup v =<< ask-  -    -- either create a basic relation or a lift relation, depending on the +  TypeVar v -> fromMaybe (error "Data.Map.lookup: Key not found") . Map.lookup v <$> ask++    -- either create a basic relation or a lift relation, depending on the     -- subtypes   TypeCon c ts -> do     rs <- mapM (interpretM l) ts   -- interpret the subtypes     ri <- mkRelationInfo l t       -- create the relation info-        +         -- checks if an intermediate relation is a basic case     let basic rel = case rel of { RelBasic _ -> True ; otherwise -> False } 
src/Language/Haskell/FreeTheorems/Parser/Haskell98.hs view
@@ -1,4 +1,4 @@-+{-# LANGUAGE FlexibleContexts #-}   -- | Defines a function to parse a string into a list of declarations.
− src/Language/Haskell/FreeTheorems/Parser/Hsx.hs
@@ -1,562 +0,0 @@-module Language.Haskell.FreeTheorems.Parser.Hsx (parse) where----import Control.Monad (foldM, liftM, liftM2, when)-import Control.Monad.Error (Error (..), throwError)-import Control.Monad.Reader (ReaderT, runReaderT, local, ask)-import Control.Monad.Trans (lift)-import Control.Monad.Writer (Writer, tell)-import Data.Generics (everywhere, mkT)-import Data.Maybe (fromMaybe)-import Data.List (nub, (\\), intersect)-import Language.Haskell.Exts.Parser (parseModule, ParseResult(..))-import Language.Haskell.Exts.Syntax-import Text.PrettyPrint--import qualified Language.Haskell.FreeTheorems.Syntax as S-import Language.Haskell.FreeTheorems.Frontend.Error------------ Main parser function ------------------------------------------------------- | Parses a string to a list of declarations.---   The string should contain a Haskell module.------   This function is based on the extended Haskell parser of the ---   \'haskell-src-exts\' package.------   The declarations returned by 'parse' include only @type@, @data@, ---   @newtype@, @class@ and type signature declarations.---   All other declarations and syntactical elements in the input are ignored.---   ---   Furthermore, the following restrictions apply:------   * Multi-parameter type classes are not allowed and therefore ignored. When---     declaring a type class, the argument to the type class name must be a---     single type variable.------   * Only type variables can be constrained by type classes. That means, for---     example, the type @Eq [a] => [a]@ is not accepted.------   * A type variable must not be applied to any type. That means, for---     example, that the type @m a@ is not accepted.------   * Contexts and @deriving@ parts in @data@ and @newtype@ declarations---     are ignored.------   * The module names are ignored. If any identifier was given qualified, the---     module part of a qualified name is ignored.---   ---   * Special Haskell constructors (unit, list function) are not allowed as---     identifiers.------   * Further extensions over Haskell98 allowed by the underlying parser are---     also forbidden, namely generalised algebraic data types and unboxed ---     tuples.------   If a parser error occurs, as suitable error message is returned in the---   second component of the returned tuple and the first component will be the---   empty list.---   However, if parsing was successful, but the parsed structures could not---   be completely transformed into @Declaration@s, suitable transformation---   error messages are returned in the second component while the first---   components contains all declarations which could be transformed---   successfully.--parse :: String -> Parsed [S.Declaration]-parse text = case parseModule text of-  ParseOk hsModule -> let decls = transform . filterDeclarations $ hsModule-                       in foldM collectDeclarations [] decls-  ParseFailed l _  -> do tell [pp ("Parse error at (" ++ show (srcLine l)-                                   ++ ":" ++ show (srcColumn l) ++ ").")]-                         return []-  where-    collectDeclarations :: [S.Declaration] -> Decl -> Parsed [S.Declaration]-    collectDeclarations ds d = -      case mkDeclaration d of-        Left e   -> tell [e] >> return ds-        Right d' -> return (ds ++ [d'])-      ------------ Filter declarations --------------------------------------------------------- | Filters all declarations of a Haskell module.--filterDeclarations :: Module -> [Decl]-filterDeclarations (Module _ _ _ _ _ _ ds) = filter isAcceptedDeclaration ds-  where-    isAcceptedDeclaration decl = case decl of-      TypeDecl _ _ _ _        -> True-      DataDecl _ _ _ _ _ _ _  -> True-      ClassDecl _ _ _ _ _ _   -> True-      TypeSig _ _ _           -> True-      otherwise               -> False------ | Transforms a list of declarations by simplifying type signatures.--transform :: [Decl] -> [Decl]-transform = everywhere (mkT extendTypeSignature)-  where-    -- Type signatures can be given for several names at once.-    -- This function transforms declarations such that every type signature is-    -- given for exactly one name only.-    extendTypeSignature :: [Decl] -> [Decl]-    extendTypeSignature ds = case ds of-      ((TypeSig l ns t):ds') -> (map (\n -> TypeSig l [n] t) ns) ++ ds'-      otherwise                -> ds------------- Transform declarations ----------------------------------------------------- | Transforms a class declaration.--clsDeclToDecl :: ClassDecl -> ErrorOr Decl-clsDeclToDecl decl = case decl of-  ClsDecl decl         -> return decl-  ClsDataFam _ _ _ _ _ -> throwError noDataFam-  ClsTyFam _ _ _ _     -> throwError noTypeFam-  ClsTyDef _ _ _       -> throwError noTypeFam--noDataFam   = pp "Data Families are not allowed"-noTypeFam   = pp "Type Families are not allowed"---- | Transforms a declaration.--mkDeclaration :: Decl -> ErrorOr S.Declaration-mkDeclaration decl = case decl of-  TypeDecl l n vs t                -> do-                                        ns <- sequence (map unkind vs) -                                        addErr l n (mkType n ns t)-  DataDecl l DataType _ n vs cs _  -> do-                                        ns <- sequence (map unkind vs) -                                        addErr l n (mkData n ns cs)-  DataDecl l NewType  _ n vs [c] _ -> do-                                        ns <- sequence (map unkind vs) -                                        addErr l n (mkNewtype n ns c)-  ClassDecl l scs n [v] _ ds       -> do-                                        nv <- unkind v -                                        addErr l n (mkClass scs n nv ds)-  TypeSig l [n] t                  -> addErr l n (mkSignature n t)--  ClassDecl l _ n [] _ _           -> addErr l n (throwError missingVar)-  ClassDecl l _ n (_:_:_) _ _      -> addErr l n (throwError noMultiParam)--  -- no other case con occur, see above function 'filterDeclarations'. -  where -    unkind (UnkindedVar x) = return x-    unkind _               = throwError $ pp "Type variable declarations with explicit kind annotations are not allowed."---missingVar   = pp "Missing type variable to be constrained by the type class."-noMultiParam = pp "Multi-parameter type classes are not allowed."------ | Adds an error message based on the name of a declaration if the given---   transformation caused an error.--addErr :: SrcLoc -> Name -> ErrorOr S.Declaration-> ErrorOr S.Declaration-addErr loc name e = case getError e of-  Nothing  -> e-  Just doc -> throwError $-                pp ("In the declaration of `" ++ hsNameToString name -                    ++ "' at (" ++ show (srcLine loc) ++ ":" -                    ++ show (srcColumn loc) ++ "):")-                $$ nest 2 doc------ | Transforms the components of a type declaration.--mkType :: Name -> [Name] -> Type -> ErrorOr S.Declaration-mkType name vars ty = do-  ident <- mkIdentifier name-  tvs   <- mapM mkTypeVariable vars-  t     <- mkTypeExpression ty-  return (S.TypeDecl (S.Type ident tvs t))------ | Transforms the components of a data declaration.--mkData :: Name -> [Name] -> [QualConDecl] -> ErrorOr S.Declaration-mkData name vars cons = do-  ident <- mkIdentifier name-  tvs   <- mapM mkTypeVariable vars-  ds    <- mapM mkDataConstructorDeclaration cons-  return (S.DataDecl (S.Data ident tvs ds))-       ----- | Transforms a data constructor declaration.--mkDataConstructorDeclaration :: -    QualConDecl -> ErrorOr S.DataConstructorDeclaration--mkDataConstructorDeclaration (QualConDecl _ _ _ (ConDecl name btys)) =-  mkDataConDecl name btys--mkDataConstructorDeclaration (QualConDecl _ _ _ (RecDecl name rbtys)) =-  let btys = concatMap (\(l,ty) -> replicate (length l) ty) rbtys-   in mkDataConDecl name btys-  ----- | Transforms the components of a data constructor declaration.--mkDataConDecl ::-    Name -    -> [BangType] -    -> ErrorOr S.DataConstructorDeclaration--mkDataConDecl name btys = do-  ident <- mkIdentifier name-  bts   <- mapM mkBangTyEx btys-  return (S.DataCon ident bts)-  where-    mkBangTyEx (BangedTy ty)   = liftM S.Banged   (mkTypeExpression ty)-    mkBangTyEx (UnBangedTy ty) = liftM S.Unbanged (mkTypeExpression ty)------ | Transforms the components of a newtype declaration.--mkNewtype :: Name -> [Name] -> QualConDecl -> ErrorOr S.Declaration-mkNewtype name vars (QualConDecl _ _ _ con) = do-  ident   <- mkIdentifier name-  tvs     <- mapM mkTypeVariable vars-  (con,t) <- mkNewtypeConDecl con-  return (S.NewtypeDecl (S.Newtype ident tvs con t))-  where-    mkNewtypeConDecl (ConDecl c bts) = mkNCD c bts-    mkNewtypeConDecl (RecDecl c bts) = mkNCD c (snd $ unzip bts)--    mkNCD c [bty] = liftM2 (,) (mkIdentifier c) (bang bty)-    mkNCD c []      = throwError errNewtype-    mkNCD c (_:_:_) = throwError errNewtype--    errNewtype = -      pp "A `newtype' declaration must have exactly one type expression."--    bang (UnBangedTy ty) = mkTypeExpression ty-    bang (BangedTy ty)   = -      throwError (pp "A `newtype' declaration must not use a strictness flag.")------ | Transforms the components of a Haskell class declaration.---   Every declaration in the class body is ignored except of type signatures.--mkClass :: Context -> Name -> Name -> [ClassDecl] -> ErrorOr S.Declaration-mkClass ctx name var clsDecls = do-  ident   <- mkIdentifier name-  tv      <- mkTypeVariable var-  superCs <- mkContext ctx >>= check tv-  decls   <- mapM clsDeclToDecl clsDecls -  sigs    <- liftM (map toSig) (mapM mkDeclaration (filter isSig decls))-    -- mapping 'isSig' is safe because after applying 'filter' no other-    -- declarations are left except of type signatures--  return (S.ClassDecl (S.Class superCs ident tv sigs))-  where-    -- Returns 'True' if a declaration is a type signature, otherwise 'False'.-    isSig :: Decl -> Bool-    isSig decl = case decl of-      TypeSig _ _ _ -> True-      otherwise       -> False--    -- Extracts a signature from a declaration.-    -- Note that no other has to be given here because all declarations passed-    -- as argument to this function are definitely type signatures.-    -- See application of 'isSig' above.-    toSig :: S.Declaration -> S.Signature-    toSig (S.TypeSig s) = s--    -- Checks if only the given type variable occurs in the second parameter.-    -- If not, an error is returned, otherwise, the list of type classes is-    -- extracted.-    check :: -        S.TypeVariable -        -> [(S.TypeClass, S.TypeVariable)] -        -> ErrorOr [S.TypeClass]-    check tv@(S.TV (S.Ident v)) ctx =-      let (tcs, tvs) = unzip ctx-       in if null (filter (/= tv) tvs)-        then return tcs-        else throwError (errClass v)--    errClass v = -      pp $ "Only `" ++ v ++ "' can be constrained by the superclasses."------ | Transforms the components of a Haskell type signature.---   The context is added to the type expression.--mkSignature :: Name -> Type -> ErrorOr S.Declaration-mkSignature var ty = do-  ident   <- mkIdentifier var-  t       <- mkTypeExpression ty-  return $ S.TypeSig (S.Signature ident t)------ | Transforms a Haskell context.---   If the context contains not only variables, but also more complex types,---   this function fails with an appropriate error message.--mkContext :: Context -> ErrorOr [(S.TypeClass, S.TypeVariable)]-mkContext = mapM trans-  where-    trans (ClassA qname [TyVar var]) = do-      ident <- liftM S.TC (mkIdentifierQ qname)-      tv    <- mkTypeVariable var-      return $ (ident, tv) -    -    trans (ClassA _ _) = throwError errContext-    trans (IParam _ _) = throwError errImplicit--errContext =-  pp "Only a type variable may be constrained by a class in a context."--errImplicit = -  pp "Implicit parameters are not allowed." ------------ Transform type expressions ------------------------------------------------type EnvErrorOr a = ReaderT [S.TypeVariable] (Either Doc) a----mkTypeExpression :: Type -> ErrorOr S.TypeExpression-mkTypeExpression ty = runReaderT (mkTypeExpressionT ty) []------ | Transforms a Haskell type.---   Note that a type variable is not allowed to be applied to some type.--mkTypeExpressionT :: Type -> EnvErrorOr S.TypeExpression-mkTypeExpressionT (TyVar var)     = liftM S.TypeVar -                                            (lift (mkTypeVariable var))-mkTypeExpressionT (TyApp ty1 ty2) = lift (mkAppTyEx ty1 [ty2])-mkTypeExpressionT (TyCon qname)   = lift (mkTypeConstructorApp qname [])--mkTypeExpressionT (TyInfix ty1 qname ty2) = -- infix type constructor-  mkTypeExpressionT (TyApp (TyApp (TyCon qname) ty1) ty2)--mkTypeExpressionT (TyFun ty1 ty2) = do-  t1 <- mkTypeExpressionT ty1-  t2 <- mkTypeExpressionT ty2-  return (S.TypeFun t1 t2)--mkTypeExpressionT (TyTuple Boxed tys)   = do-  ts <- mapM mkTypeExpressionT tys-  return (S.TypeCon (S.ConTuple (length ts)) ts)--mkTypeExpressionT (TyForall maybeVars ctx ty) =-  mkForallTyEx (maybe [] (map unKind) maybeVars) ctx ty-  where unKind (KindedVar n _) = n-        unKind (UnkindedVar n) = n----- daniel-mkTypeExpressionT (TyList ty) = do-  t <- mkTypeExpressionT ty-  return (S.TypeCon (S.ConList) [t])--mkTypeExpressionT (TyParen ty) = mkTypeExpressionT ty--mkTypeExpressionT (TyKind ty kd) = -    throwError (pp "Explicit kind signatures are not allowed.")---- mkTypeExpressionT (TyPred _) = ---   throwError (pp "Implicit parameters are not allowed.")--mkTypeExpressionT (TyTuple Unboxed _ ) = -  throwError (pp "Unboxed tuples are not allowed.")------ | Checks type abstractions for unique variables, merges the contexts and---   creates a type expression.--mkForallTyEx :: [Name] -> Context -> Type -> EnvErrorOr S.TypeExpression-mkForallTyEx vars ctx ty = do-  vs <- unique vars-  cx <- lift (mkContext ctx)-  let unboundVars = (nub . snd . unzip $ cx) \\ vs-  let allVars = vs ++ unboundVars-  knownVars <- ask-  let errVars = knownVars `intersect` unboundVars-  when (not (null errVars)) $ throwError $ pp $ -    "The constrained type variable `" ++ (S.unpackIdent . (\(S.TV i) -> i) . head $ errVars)-    ++ "' must be explicitly quantified."-  liftM (merge allVars cx) (local (++ allVars) (mkTypeExpressionT ty))-  where-    -- Checks if the elements of the argument are unique, and throws an error-    -- otherwise.-    unique :: [Name] -> EnvErrorOr [S.TypeVariable]-    unique []     = return []-    unique (v:vs) = if v `elem` vs-                      then throwError (pp $-                             "Conflicting type variables in a type "-                             ++ "abstraction, the type variable `"-                             ++ hsNameToString v ++ "' is quantified more "-                             ++ "than once.")-                      else liftM2 (:) (lift (mkTypeVariable v)) (unique vs)--    -- Merges the context and the type expression. The context is represented-    -- as type abstractions.-    merge :: -        [S.TypeVariable] -> [(S.TypeClass, S.TypeVariable)] -        -> S.TypeExpression -> S.TypeExpression-    merge vs cx t = foldr (\v -> S.TypeAbs v (classes cx v)) t vs--    -- Returns classes constraining v.-    classes cx v = nub (map fst (filter ((==) v . snd) cx))------ | Collects applied types and transforms them into a type expression.--mkAppTyEx :: Type -> [Type] -> ErrorOr S.TypeExpression-mkAppTyEx ty tys = case ty of-  TyFun _ _   -> throwError $ pp ("A function type must not be applied to a "-                                    ++ "type.")-  TyTuple _ _ -> throwError (pp "A tuple type must not be applied to a type.")-  TyVar _     -> throwError (pp "A variable must not be applied to a type.")-  TyApp t1 t2 -> mkAppTyEx t1 (t2 : tys)-  TyCon qname -> mapM mkTypeExpression tys >>= mkTypeConstructorApp qname ------ | Interprets a qualified name as a type constructor and applies it to a list---   of type expressions.---   The function type constructor is handled specially because it has to have---   exactly two arguments.--mkTypeConstructorApp :: -    QName -    -> [S.TypeExpression] -    -> ErrorOr S.TypeExpression--mkTypeConstructorApp (Special FunCon) [t1,t2] = return $ S.TypeFun t1 t2-mkTypeConstructorApp (Special FunCon) _       = throwError errorTypeConstructorApp--mkTypeConstructorApp qname              ts      = -  liftM (\con -> S.TypeCon con ts) (mkTypeConstructor qname)--errorTypeConstructorApp =-  pp "The function type constructor `->' must be applied to exactly two types."------ | Transforms a qualified name into a type constructor.---   Special care is taken for primitive types which could be qualified by---   \'Prelude\'.--mkTypeConstructor :: QName -> ErrorOr S.TypeConstructor-mkTypeConstructor (Qual (ModuleName mod) hsName) = -  if mod == "Prelude"-    then return (asCon hsName)-    else return (S.Con $ hsNameToIdentifier hsName)-mkTypeConstructor (UnQual hsName)                = return $ asCon hsName-mkTypeConstructor (Special UnitCon)              = return $ S.ConUnit-mkTypeConstructor (Special ListCon)              = return $ S.ConList-mkTypeConstructor (Special (TupleCon Boxed n))   = return $ S.ConTuple n-mkTypeConstructor (Special (TupleCon Unboxed n)) = throwError $ pp "Unboxed tuples are not allowed."---- missing case '(Special FunCon)' cannot occur,--- see function 'mkTypeCOnstructorApp'---- missing case '(Special Cons)' cannot occur,--- this is not valid Haskell syntax------ | Transforms a name into a type constructor. This functions differentiates---   between primitive types and other types.--asCon :: Name -> S.TypeConstructor-asCon name = case name of-  Ident "Int"     -> S.ConInt-  Ident "Integer" -> S.ConInteger-  Ident "Float"   -> S.ConFloat-  Ident "Double"  -> S.ConDouble-  Ident "Char"    -> S.ConChar-  otherwise         -> S.Con $ hsNameToIdentifier name------ | Transforms a Haskell name into a type variable.--mkTypeVariable :: Name -> ErrorOr S.TypeVariable-mkTypeVariable = return . S.TV . hsNameToIdentifier------ | Transforms a qualified Haskell name into an identifier.---   The module part of a qualified name is ignored.---   This function fails with an appropriate error message when applied to a---   special Haskell constructor, i.e. a unit, list, function or tuple---   constructor.--mkIdentifierQ :: QName -> ErrorOr S.Identifier-mkIdentifierQ (UnQual hsName)          = return (hsNameToIdentifier hsName)-mkIdentifierQ (Qual (ModuleName _) hsName) = return (hsNameToIdentifier hsName)--mkIdentifierQ (Special UnitCon)            = throwErrorIdentifierQ "`()'"-mkIdentifierQ (Special ListCon)            = throwErrorIdentifierQ "`[]'"-mkIdentifierQ (Special FunCon)             = throwErrorIdentifierQ "`->'"-mkIdentifierQ (Special Cons)               = throwErrorIdentifierQ "`:'"-mkIdentifierQ (Special (TupleCon _ _)) = throwErrorIdentifierQ "for tuples"--throwErrorIdentifierQ s = throwError $ pp $-  "The constructor " ++ s ++ " must not be used as an identifier."------ | Transforms a Haskell name into an identifier.---   This function encapsulates 'hsNameToIdentifier' into the 'ErrorOr' monad.--mkIdentifier :: Name -> ErrorOr S.Identifier-mkIdentifier = return . hsNameToIdentifier------ | Transforms a Haskell name into an identifier.--hsNameToIdentifier :: Name -> S.Identifier-hsNameToIdentifier = S.Ident . hsNameToString------ | Transforms a Haskell name into a string.---   Haskell symbols are surrounded by parentheses.--hsNameToString :: Name -> String-hsNameToString (Ident s)  = s-hsNameToString (Symbol s) = "(" ++ s ++ ")"---
src/Language/Haskell/FreeTheorems/PrettyTheorems.hs view
@@ -15,7 +15,7 @@   , prettyUnfoldedClass ) where -+import Prelude hiding ((<>))  import Data.List (partition, find) import Data.Maybe (mapMaybe)
src/Language/Haskell/FreeTheorems/PrettyTypes.hs view
@@ -10,7 +10,7 @@  module Language.Haskell.FreeTheorems.PrettyTypes where -+import Prelude hiding ((<>))  import Text.PrettyPrint