packages feed

flexible-defaults-0.0.0.2: flexible-defaults.cabal

name:                   flexible-defaults
version:                0.0.0.2
stability:              experimental

cabal-version:          >= 1.6
build-type:             Simple

author:                 James Cook <mokus@deepbondi.net>
maintainer:             James Cook <mokus@deepbondi.net>
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