name: flexible-defaults
version: 0.0.0.2
stability: experimental
cabal-version: >= 1.6
build-type: Simple
author: James Cook
maintainer: James Cook
license: PublicDomain
homepage: https://github.com/mokus0/flexible-defaults
category: Code Generation, Template Haskell
synopsis: Generate default function implementations for complex type classes.
description: Template Haskell code to implement default implementations
for type-class functions based on which functions are
already implemented. Currently extremely crude but
still fairly effective.
.
When defining a type class with many functions, each
of which can be implemented based on arbitrary subsets
of the others, the standard default-implementation
concept breaks down quite badly. This library provides
a system by which more complex rules can be described
for choosing default implementations based on which
ones the user supplies. These implementations can
additionally be given \"suitability scores\", so that
when multiple possible choices could be made, the
library can choose the \"best\" one.
.
Changes in v0.0.0.2: Nothing at all except setting
'buildable: False' under GHC 7.2.1.
Technically it builds on 7.2.1, but it doesn't actually generate
correct code due to http://hackage.haskell.org/trac/ghc/ticket/5410
which has been patched and will almost certainly be fixed in the next
GHC release. AFAIK 7.2.1 is the only release where this bug actually
caused problems. I'm sure it could be worked around, but it's a
whole lot easier to just say "wait for 7.2.2/7.4". If anyone
desperately needs this package under 7.2.1, let me know and I'll
see what I can do.
extra-source-files: examples/*.hs
tested-with: GHC == 6.8.3, GHC == 6.10.4, GHC == 6.12.1,
GHC == 6.12.3, GHC == 7.0.1, GHC == 7.0.2
source-repository head
type: git
location: https://github.com/mokus0/flexible-defaults.git
Library
hs-source-dirs: src
ghc-options: -Wall
exposed-modules: Language.Haskell.TH.FlexibleDefaults
other-modules: Language.Haskell.TH.FlexibleDefaults.DSL
Language.Haskell.TH.FlexibleDefaults.Solve
build-depends: base >= 3 && <5,
containers,
template-haskell,
transformers
if impl(ghc == 7.2.1)
buildable: False