Module Generic_view_sumprod

module Generic_view_sumprod: sig .. end
Sum of Product view replicating the Haskell LIGD library

Cheney, James, & Hinze, Ralf. (2002). A lightweight implementation of generics and dynamics. Pages 90--104 of Haskell Workshop02.


type 'a sp = 
| Base : 'a0 Ty.T.ty -> 'a0 sp
| Empty : Sum.empty sp
| Sum : 'a1 sp * 'b sp -> ('a1, 'b) Sum.sum sp
| Unit : unit sp
| Prod : 'a2 sp * 'b0 sp -> ('a2 * 'b0) sp
| Delay : 'a3 Ty.T.ty -> 'a3 sp
| Con : string * 'a4 sp -> 'a4 sp
| Field : string * 'a5 sp -> 'a5 sp
| Iso : 'a6 sp * ('a6, 'b1) Fun.iso -> 'b1 sp
val sumprod : 'a Ty.T.ty -> 'a sp
val view : 'a Ty.T.ty -> 'a sp
view = sumprod