ghc-instances 0.1.0.0 → 0.1.0.1
raw patch · 1 files changed
+15/−14 lines, 1 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ghc-instances.cabal +15/−14
ghc-instances.cabal view
@@ -1,45 +1,46 @@ name: ghc-instances-version: 0.1.0.0+version: 0.1.0.1 synopsis: Easily import all instances contained in GHC distributed libraries description: This package simply has a number of modules which import all the modules from each package that is distributed with GHC.-+ . There's also a module "Control.Instances.GHC_Packages", that imports all of the above modules, essentially importing every module distributed with GHC.-+ . Why would you want to do this?-+ . Lets say I've got a data type \"D a\". And a class \"C\".-+ . Further, lets say I can define \"C (D a)\" if "a" is of class \"C1\". I can also \"C (D a)\" if "a" is of class \"C2\"-+ . Lets try:-+ . instance C1 a => C (D a) where ...-+ . instance C2 a => C (D a) where ...-+ . These are going to be overlapping. We can't do this.-+ . But instead, we import "Control.Instances.GHC_Packages". And then we can use [reify](https://hackage.haskell.org/package/template-haskell-2.12.0.0/docs/Language-Haskell-TH.html#v:reify) from [Template Haskell](https://hackage.haskell.org/package/template-haskell-2.12.0.0) to bring every \"C1\" and \"C2\" instance in to scope that's defined anywhere in "base" or any GHC module.-+ . We can then use Template Haskell to define all our instances. We can explicitly define what happens when both \"C1\" and \"C2\" instances are defined, perhaps prefering one over the other.-+ . As we've got the full power of Haskell in Template Haskell, we can do these manipulations.-+ . The package [static-closure](https://hackage.haskell.org/package/static-closure) is an example of using these instances to generate it's own instances for it's data type.-+ . This package will need to be updated with each release of GHC but currently the cabal file and modules should contain appropriate pre-processor directives that this package should work from least from GHC 7.8 to GHC 8.2.+ homepage: https://github.com/clintonmead/ghc-instances#readme license: BSD3 license-file: LICENSE