Legend:
Library
Module
Module type
Parameter
Class
Class type
This is a module for building forms that allow the user to edit complicated types (for example, configs).
'a Sexp_form.t gives you a form for editing values of type 'a.
It is called Sexp_form because it relies on the fact that 'a can be represented as a sexp. Specifically, it is capable of parsing the sexp representation of 'a to fill out the default values for the fields of the form automatically.
This means that if you have a type 'a which defines sexp_of_a, you can specify a default value of type 'a when rendering the 'a Sexp_form.t.
Sexp_form has other useful functionality beyond just parsing default values.
For example, list : 'a Sexp_form.t -> 'a list Sexp_form.t converts a form for editing 'a into a form for editing 'a list.
This gives the user buttons to add and delete elements and remembers deleted elements so that the user can undo.
Note: If you can't convert 'a to a sexp, you can still construct a 'a Sexp_form.t. You will just be unable to specify default values for the form.
Used to display default as the initial value of your sexp_form. Also displays diff for the user to understand how the values entered into the form differ from the default value. between is a node which will be displayed between the form and the diff.