Module PidginSource

Pidgin 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:

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).

Data Representation

Sourcemodule Repr : sig ... end

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.

Sourcemodule Kind : sig ... end

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.

Data Validation

Sourcemodule Check : sig ... end

Describes a validation tree for validating complex structured data from Repr.t.

Drivers

Sourcemodule Driver : sig ... end

A driver allows Pidgin to be used as an exchange format. It exposes two signatures that enable conversion to Repr.t and conversion from Repr.t, respectively.

S-Expression

S-expressions make it easy to serialize Pidgin expressions; however, the format was designed to be used with any key-value representation.

Sourcemodule Sexp : sig ... end

A minimalist library for describing and parsing S-expression.

Sourcemodule Csexp : sig ... end

A minimalist library for describing and parsing Canonical S-expression.

Misc

Sourcemodule Prism : sig ... end

A Prism is used to describe a codec that enables serialization and deserialization (it consists of a Repr.conv and a Check.t pair).

Sourcemodule Misc : sig ... end