MyNixOS website logo
Description

Derive class instances though various kinds of lifting.

Helper functions to use Template Haskell for generating class instances.

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)
Metadata

Version

0.2.2

License

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows