syb 0.5.1 → 0.6
raw patch · 3 files changed
+95/−68 lines, 3 files
Files
- syb.cabal +65/−64
- tests/Datatype.hs +24/−3
- tests/Newtype.hs +6/−1
syb.cabal view
@@ -1,64 +1,65 @@-name: syb-version: 0.5.1-license: BSD3-license-file: LICENSE-author: Ralf Lammel, Simon Peyton Jones, Jose Pedro Magalhaes-maintainer: generics@haskell.org-homepage: http://www.cs.uu.nl/wiki/GenericProgramming/SYB-bug-reports: http://code.google.com/p/scrapyourboilerplate/issues/list-synopsis: Scrap Your Boilerplate-description:- This package contains the generics system described in the- /Scrap Your Boilerplate/ papers (see- <http://www.cs.uu.nl/wiki/GenericProgramming/SYB>).- It defines the @Data@ class of types permitting folding and unfolding- of constructor applications, instances of this class for primitive- types, and a variety of traversals.--category: Generics-stability: provisional-build-type: Simple-cabal-version: >= 1.8--extra-source-files: tests/*.hs,- README--source-repository head- type: git- location: https://github.com/dreixel/syb--Library- hs-source-dirs: src- build-depends: base >= 4.0 && < 5.0- exposed-modules: Data.Generics,- Data.Generics.Basics,- Data.Generics.Instances,- Data.Generics.Aliases,- Data.Generics.Schemes,- Data.Generics.Text,- Data.Generics.Twins,- Data.Generics.Builders,-- Generics.SYB,- Generics.SYB.Basics,- Generics.SYB.Instances,- Generics.SYB.Aliases,- Generics.SYB.Schemes,- Generics.SYB.Text,- Generics.SYB.Twins,- Generics.SYB.Builders-- if impl(ghc < 6.12)- ghc-options: -package-name syb-- ghc-options: -Wall--test-suite unit-tests- type: exitcode-stdio-1.0- hs-source-dirs: tests- main-is: Main.hs- build-depends: base- , syb- , HUnit- , containers- , mtl+name: syb +version: 0.6 +license: BSD3 +license-file: LICENSE +author: Ralf Lammel, Simon Peyton Jones, Jose Pedro Magalhaes +maintainer: generics@haskell.org +homepage: http://www.cs.uu.nl/wiki/GenericProgramming/SYB +bug-reports: http://code.google.com/p/scrapyourboilerplate/issues/list +synopsis: Scrap Your Boilerplate +description: + This package contains the generics system described in the + /Scrap Your Boilerplate/ papers (see + <http://www.cs.uu.nl/wiki/GenericProgramming/SYB>). + It defines the @Data@ class of types permitting folding and unfolding + of constructor applications, instances of this class for primitive + types, and a variety of traversals. + +category: Generics +stability: provisional +build-type: Simple +cabal-version: >= 1.8 +tested-with: GHC >=7.0 && <=7.10.2, GHC==7.11.* + +extra-source-files: tests/*.hs, + README + +source-repository head + type: git + location: https://github.com/dreixel/syb + +Library + hs-source-dirs: src + build-depends: base >= 4.0 && < 5.0 + exposed-modules: Data.Generics, + Data.Generics.Basics, + Data.Generics.Instances, + Data.Generics.Aliases, + Data.Generics.Schemes, + Data.Generics.Text, + Data.Generics.Twins, + Data.Generics.Builders, + + Generics.SYB, + Generics.SYB.Basics, + Generics.SYB.Instances, + Generics.SYB.Aliases, + Generics.SYB.Schemes, + Generics.SYB.Text, + Generics.SYB.Twins, + Generics.SYB.Builders + + if impl(ghc < 6.12) + ghc-options: -package-name syb + + ghc-options: -Wall + +test-suite unit-tests + type: exitcode-stdio-1.0 + hs-source-dirs: tests + main-is: Main.hs + build-depends: base + , syb + , HUnit + , containers + , mtl
tests/Datatype.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# OPTIONS -fglasgow-exts #-} -- These are simple tests to observe (data)type representations. @@ -16,8 +17,10 @@ -- Some terms and corresponding type representations myTerm = undefined :: MyDataType Int myTypeRep = typeOf myTerm -- type representation in Typeable -myTyCon = typeRepTyCon myTypeRep -- type constructor via Typeable myDataType = dataTypeOf myTerm -- datatype representation in Data + +#if MIN_VERSION_base(4,5,0) +myTyCon = typeRepTyCon myTypeRep -- type constructor via Typeable myString1 = tyConName myTyCon -- type constructor via Typeable myString2 = dataTypeName myDataType -- type constructor via Data @@ -29,6 +32,24 @@ , ( tyconModule myString2 , ( tyconUQname myString2 )))))) - ~=? output + ~?= output -output = "(MyDataType Int,(DataType {tycon = \"Datatype.MyDataType\", datarep = AlgRep [MyDataType]},(\"\",(\"MyDataType\",(\"Datatype\",\"MyDataType\")))))"+#if __GLASGOW_HASKELL__ >= 709 +-- In GHC 7.10 module name is stripped from DataType +output = "(MyDataType Int,(DataType {tycon = \"MyDataType\", datarep = AlgRep [MyDataType]},(\"\",(\"MyDataType\",(\"\",\"MyDataType\")))))" +#else +output = "(MyDataType Int,(DataType {tycon = \"Datatype.MyDataType\", datarep = AlgRep [MyDataType]},(\"\",(\"MyDataType\",(\"Datatype\",\"MyDataType\")))))" +#endif + +#else + +tests = show ( myTypeRep, myDataType ) + ~?= output + +#if __GLASGOW_HASKELL__ >= 701 +output = "(MyDataType Int,DataType {tycon = \"Datatype.MyDataType\", datarep = AlgRep [MyDataType]})" +#else +output = "(Datatype.MyDataType Int,DataType {tycon = \"Datatype.MyDataType\", datarep = AlgRep [MyDataType]})" +#endif + +#endif
tests/Newtype.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# OPTIONS -fglasgow-exts #-} module Newtype (tests) where @@ -10,6 +11,10 @@ newtype T = MkT Int deriving( Typeable ) -tests = show (typeOf (undefined :: T)) ~=? output +tests = show (typeOf (undefined :: T)) ~?= output +#if __GLASGOW_HASKELL__ >= 701 output = "T" +#else +output = "Newtype.T" +#endif