PidginSourcePidgin is a generic key-value data structure description language that enables fine-grained validation to deal with format like JSON, S-expression, Yaml, ToML etc.
The main idea is to present a minimal representation (very similar to that of JSON) and to provide:
Repr).Check).Repr and Check can be combined using Prism.Driver), imposing a cost due to the indirect nature of the generic format (though it is viable in many scenarios).Pidgin does not statically preserve the type of expressions; instead, it hides them, which allows expressions written in this language to be treated as an untyped runtime representation of arbitrary OCaml values (enabling the derivation of pretty-printers and equality functions, for example).
Broadly speaking, Pidgin describes a "generic" key-value language that serves as an intermediate format between several other key-value formats (such as JSON, TOML, YAML, etc.). Repr describes the abstract representation of this language.
A Kind is a type of light type. It holds less information than a full-fledged type system and is used primarily for generating error messages (and perhaps, in the near future, for defunctionalize validation functions). Naively, they can be viewed as a representation that does not hold the value of a term described by Repr.t.
Describes a validation tree for validating complex structured data from Repr.t.
S-expressions make it easy to serialize Pidgin expressions; however, the format was designed to be used with any key-value representation.
A minimalist library for describing and parsing S-expression.
A minimalist library for describing and parsing Canonical S-expression.