Seamless, Correct, and Generic Programming over Serialised Data

Overview

Idris2

The code in this paper are written in Idris2.

Dependent types

The type is influecents by the value. For example we can have the length of a list inside the type. We can have functions that depend on types.

Induction tree

Alt text

In the Iris2, how does it store this tree? One idea: We have a value that describes the kind of the constructor, values and pointers to pointer to another constructor. We want to end up having a solution that uses buffers, which is very fast.

Data types

Serialized representations

The format they have chosen is a hex file. The header describes the way the data is build up.

Pointers and Buffers

Given some fixed point over data we have location and a datatype.

The type family singleton represents all types that are described uniquely by their variables.

Now we can a view function that takes a type an a pointer and returns what is stored in the location. The main constructor is the (#) to combine serialization processes.

Conclusion

In this language it is impossible to have faulty pointer arithmetic, because the datatype does not allow it.