Module Tpf_crowbar

Generic Crowbar.

This module provides generic Crowbar.gen and depends on crowbar.

It combines nicely with with generic printing and generic equality.

Generic gen

include Tpf.P with type 'a q := 'a Crowbar.gen
type 'a q

Query type.

type p

q proxy.

val (!) : 'a q -> ('ap) Tpf.app

Injection.

val g_gen : ('ap) Tpf.schema -> 'a Crowbar.gen

data interface

include Tpf.Data with type 'a q := 'a Crowbar.gen and type 'a r := 'a Crowbar.gen
type 'a q

The query type.

This is what we need at each inner type that we encounter.

type 'a r

The overall result type.

It's often the same as q, but it doesn't have to be.

val data0 : 'x Tpf.data0 -> 'x r
val data1 : ('a'x) Tpf.data1 -> 'a q -> 'x r
val data2 : ('a'b'x) Tpf.data2 -> 'a q -> 'b q -> 'x r
val data3 : ('a'b'c'x) Tpf.data3 -> 'a q -> 'b q -> 'c q -> 'x r
val data4 : ('a'b'c'd'x) Tpf.data4 -> 'a q -> 'b q -> 'c q -> 'd q -> 'x r
val data5 : ('a'b'c'd'e'x) Tpf.data5 -> 'a q -> 'b q -> 'c q -> 'd q -> 'e q -> 'x r
val data6 : ('a'b'c'd'e'f'x) Tpf.data6 -> 'a q -> 'b q -> 'c q -> 'd q -> 'e q -> 'f q -> 'x r
val data7 : ('a'b'c'd'e'f'g'x) Tpf.data7 -> 'a q -> 'b q -> 'c q -> 'd q -> 'e q -> 'f q -> 'g q -> 'x r
val data8 : ('a'b'c'd'e'f'g'h'x) Tpf.data8 -> 'a q -> 'b q -> 'c q -> 'd q -> 'e q -> 'f q -> 'g q -> 'h q -> 'x r
val data9 : ('a'b'c'd'e'f'g'h'i'x) Tpf.data9 -> 'a q -> 'b q -> 'c q -> 'd q -> 'e q -> 'f q -> 'g q -> 'h q -> 'i q -> 'x r