compdata-0.10.1: Compositional Data Types

Copyright(c) 2014 Patrick Bahr
LicenseBSD3
MaintainerPatrick Bahr <paba@di.ku.dk>
Stabilityexperimental
Portabilitynon-portable (GHC Extensions)
Safe HaskellNone
LanguageHaskell98

Data.Comp.Multi.Projection

Description

This module provides a generic projection function pr for arbitrary nested binary products.

Synopsis

Documentation

pr :: forall p q a. p :< q => q a -> p a Source

This function projects the component of type e out or the compound value of type p.

type (:<) f g = Proj (ComprEmb (Elem f g)) f g infixl 5 Source

The constraint e :< p expresses that e is a component of the type p. That is, p is formed by binary products using the type e. The occurrence of e must be unique. For example we have Int :< (Bool,(Int,Bool)) but not Bool :< (Bool,(Int,Bool)).

data (f :*: g) a infixr 8 Source

Formal product of signatures (functors).

Constructors

(f a) :*: (g a) infixr 8 

Instances

ffst :: (f :*: g) a -> f a Source

fsnd :: (f :*: g) a -> g a Source