derive-lifted-instances: Derive class instances though various kinds of lifting

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Helper functions to use Template Haskell for generating class instances.


[Skip to Readme]

Properties

Versions 0, 0.1, 0.1.1, 0.2, 0.2, 0.2.1, 0.2.2
Change log CHANGELOG.md
Dependencies base (>=4.13 && <4.15), bifunctors (>=5.5.7 && <6), reflection (>=2.1 && <3), template-haskell (>=2.15 && <2.17) [details]
License Apache-2.0
Author Sjoerd Visscher
Maintainer sjoerd@w3future.com
Category Data, Generics, Development
Home page https://github.com/sjoerdvisscher/derive-lifted-instances
Bug tracker https://github.com/sjoerdvisscher/derive-lifted-instances/issues
Source repo head: git clone git://github.com/sjoerdvisscher/derive-lifted-instances.git
Uploaded by SjoerdVisscher at 2020-06-29T15:33:55Z

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for derive-lifted-instances-0.2

[back to package description]

derive-lifted-instances

Hackage Build Status

derive-lifted-instances generates type class instances using Template Haskell.

Below is an overview of what this library can do. If you could rewrite a class as one of the cases, and the listed constraints are satisfiable, then an instance can be derived. Note that when another instance of the class is required, this could also be a derived instance (i.e. deriving is composable), in case you don't want that instance to actually exist.

class C x where alg :: f x -> x
x iso y (Functor f, C y)
x=m (Foldable f, Monoid m)
x=t a (Traversable f, Applicative t, C a)
x=t a b (Traversable f, Biapplicative t, C a, C b)
x a record (Traversable f, All C flds)
class C x where coalg :: x -> f x
x iso y (Functor f, C y)
x=m (Pointed f)
x=t a (Applicative f, Traversable t, C a)
x=t a b (Applicative f, Bitraversable t, C a, C b)
x a record (Applicative f, All C flds)
class C x where dialg :: f x -> g x
x iso y (Functor f, Functor g, C y)
x=m (Foldable f, Porinted g, Monoid m)
x=t a (Traversable f, Applicative g, Applicative t, Traversable t, C a)
x=t a b (Traversable f, Applicative g, Biapplicative t, Bitraversable t, C a, C b)
x a record (Traversable f, Applicative g, All C flds)