Copyright | 2013-2019 Kei Hibino |
---|---|

License | BSD3 |

Maintainer | ex8k.hibino@gmail.com |

Stability | experimental |

Portability | unknown |

Safe Haskell | None |

Language | Haskell2010 |

This module defines typed projection path objects. Contains normal interfaces.

# Projection path

Projection path from type `r0`

into type `r1`

.
This type also indicate key object which type is `r1`

for record type `r0`

.

## Instances

HasProjection l a b => IsLabel l (Pi a b) Source # | Derive |

Defined in Database.Relational.OverloadedProjection | |

ProductIsoFunctor (Pi a) Source # | Map projection path |

Defined in Database.Relational.Pi.Unsafe (|$|) :: ProductConstructor (a0 -> b) => (a0 -> b) -> Pi a a0 -> Pi a b # | |

ProductIsoApplicative (Pi a) Source # | Compose projection path |

Defined in Database.Relational.Pi.Unsafe | |

Category Pi Source # | |

ProductIsoEmpty (Pi a) () Source # | |

PersistableWidth r0 => Show (Pi r0 r1) Source # | |

(<?.?>) :: Pi a (Maybe b) -> Pi b (Maybe c) -> Pi a (Maybe c) infixl 8 Source #

Compose projection path. `Maybe`

phantom functors are `join`

-ed like `>=>`

.

# Low-level API

expandIndexes' :: PersistableRecordWidth a -> Pi a b -> [Int] Source #

Expand indexes from key.

expandIndexes :: PersistableWidth a => Pi a b -> [Int] Source #

Expand indexes from key. Infered width version.