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