functor-combo-0.0.0: src/FunctorCombo/Derivative.hs
{-# LANGUAGE TypeFamilies, TypeOperators #-}
{-# OPTIONS_GHC -Wall #-}
----------------------------------------------------------------------
-- |
-- Module : FunctorCombo.Derivative
-- Copyright : (c) Conal Elliott 2010
-- License : BSD3
--
-- Maintainer : conal@conal.net
-- Stability : experimental
--
-- Derivatives (one-hole contexts) for standard Functor combinators
----------------------------------------------------------------------
module FunctorCombo.Derivative (Der) where
import FunctorCombo.Functor
{--------------------------------------------------------------------
Derivatives, i.e., one-hole contexts
--------------------------------------------------------------------}
-- | A derivative, i.e., a one-hole context for a container f (probably a functor).
type family Der (f :: (* -> *)) :: (* -> *)
type instance Der (Const a) = Void
type instance Der Id = Unit
type instance Der (f :+: g) = Der f :+: Der g
type instance Der (f :*: g) = Der f :*: g :+: f :*: Der g
type instance Der (g :. f) = Der g :. f :*: Der f