package pidgin
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=4a7bb0fccdebf5b205d2eeaa8a9b8e50acf267445f949a2b1a8304def9a38548
sha512=2612fc5cbdd6173a0676ae8840158b85358744561245d0b55ce0ebcf41acb26eddbd316be42a60d55e187928182f681cf3efb4f556ddf47d698217e8376633d3
doc/pidgin/Pidgin/index.html
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:
- a DSL for describing arbitrary data structures in this language (see
Repr) - Validation functions that operate on data described using this DSL (see
Check) - A bidirectional conversion approach (see
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).
Data Representation
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.
Data Validation
Describes a validation tree for validating complex structured data from Repr.t.
Drivers
S-Expression
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.