package record_builder

  1. Overview
  2. Docs
type ('out, 'all_fields, 'extra) accum

An internal state which is folded through the fields.

type ('field, 'head, 'tail, 'all_fields, 'extra) fold_step = ('head, 'all_fields, 'extra) accum -> ('all_fields -> 'field) * ('tail, 'all_fields, 'extra) accum

Each part of the fold has a type of this form.

type ('field, 'tail, 'all_fields, 'extra) handle_one_field = ('field, ('field, 'tail) Hlist.cons, 'tail, 'all_fields Hlist.nonempty, 'extra) fold_step

A step of the fold over a single field has this type.

Each argument to Fields.make_creator should take that field as an argument and return something of this type (see field below).

type ('record, 'all_fields, 'extra) handle_all_fields = ('record, 'all_fields Hlist.nonempty, Hlist.nil, 'all_fields Hlist.nonempty, 'extra) fold_step

The overall fold of multiple steps created by applying Fields.make_creator without an initial value should have a type of this form. You then supply it as an argument to build_for_record below.