packages feed

impl-0.2.0.0: impl.cabal

cabal-version: 2.2
name: impl
homepage: https://github.com/exordium/impl#readme
version: 0.2.0.0
category: Development, Template Haskell
synopsis: Framework for defaulting superclasses
description: This small but extensible framework facilitates defining complex defaulting rules that are not handled by DefaultSignatures, and reducing the overhead of giving instances to new datatypes by generating superclasses. One reason we might want this is when a superclass wants to be given a default by two different subclasses (ex: Bifunctor and Profunctor both could generate Functor instances). See the example internal library for how to implement instances of Impl. Impl is most valuable when instantiating deep (or even undecidably recursive) typeclass hierarchies for multiple new datatypes, which is most common in client code.
stability: cursed
bug-reports: https://github.com/exordium/impl/issues
author: Dai
maintainer: daig@sodality.cc
copyright: 2018 Sodality
license: MIT

source-repository head
  type: git
  location: https://github.com/exordium/impl

common x
  default-language: Haskell2010
  default-extensions: TypeFamilies, ViewPatterns, DataKinds, TypeOperators,  AllowAmbiguousTypes, TypeApplications, OverloadedLabels, TemplateHaskell, PolyKinds, PatternSynonyms, LambdaCase
  build-depends: base ^>= 4.12.0.0

library
  import: x
  exposed-modules: Impl
  other-modules: Impl.Utils
  build-depends: template-haskell ^>= 2.14.0.0
               , named ^>= 0.2.0.0
               , containers ^>= 0.6.0.1

Flag DumpExample
  Description: Show generated TH in example
  Default: False
  Manual: True

library example
  import: x
  hs-source-dirs: example
  exposed-modules: Monad.Impl, Monad.Foo
  if flag(DumpExample)
    ghc-options: -ddump-splices -dsuppress-uniques
  build-depends: impl