Exobiont Systems

⌂ Home

Ldmc — The Ladder-Typed Data Morphing Compiler

Given a description of input/output types, ldmc generates code for transforming between different data representations of the same abstract type.

Based on ladder types, which enable the disambiguation of lower-level representations while keeping the higher-level, abstract type structure intact, ldmc takes a library of primitive data transformation routines (morphisms) and tries to compose them into a path of morphisms such that the requested data transformation problem can be solved. This works by inducing a graph of morphisms (see picture below), inside which ldmc searches for the shortest path between the given input and output type.

Example: To solve the data transformation problem given by the type description

morph_angle1:  Angle ~ Degrees ~ ℝ ~ native.Float64
          -->  Angle ~ Radians ~ ℝ ~ native.Float64

ldmc creates the following graph: morphism

Further Reading

Requirements for Efficient and Safe Data Marshaling

To motivate our design of a generalized, type-driven system for data transformation, we examine the problem of data marshaling across a wide range of application contexts and aim to unify them under two principal perspectives:...

Ladder Types

In order to implement complex datastructures and algorithms, usually many layers of abstraction are built ontop of each other. Consequently higher-level data types are encoded into lower-level data types, forming a chain of embeddings from concept to `rock bottom' of...