CategoricalData / hydra

Transformations transformed
Apache License 2.0
74 stars 10 forks source link

Hydra

Hydra is a domain-specific language for type-safe transformations between data, schema, and program representations. As a data transformation toolkit, Hydra is similar to Dragon, but open source, and with a more completely and formally specified data model based on typed lambda calculus. Hydra maps data and schemas between languages in a way which maintains type conformance. It will even map functional programs between selected languages, including parts of its own source code.

For more information, see hydra-haskell as well as the Data Day Texas presentation, "Transpilers Gone Wild" and its sequel, "Graphs Gone Wild". To get involved, join the Hydra Discord server. An early design document is available here. The full specification of Hydra's data model, nicknamed LambdaGraph, should appear as a preprint before long; you can see major excerpts from the specification here.

The project encompasses:

Both of the active language variants (Haskell and Java) contain a complete copy of Hydra's built-in generated APIs, including:

Hydra also features a language-agnostic test suite which guarantees parity of program evaluation and primitive functions across the language variants. Along with the rest of Hydra's generated code, the test suite will be used as a seed for future implementations in additional languages, such as Python and Go.

If you would like to contribute to Hydra, please see the Hydra developer documentation.