2025-01-27: André Videla (MSP)

Fri, 24 Jan 2025 09:13:30 +0000

André Videla (MSP)

Pipelining and dependent types

Abstract

Pipelining is a crude CPU optimisation to speed up execution of sequential programs. By allowing the manipulation of types as values, dependent types enable new abstractions to manipulate large-scale of software based on sequential computation inspired by CPU pipelining. I will show how to define pipelines, sequential programs that cannot easily be parallelised using a list of types as a specification. Given this list of type, the implementation of a pipeline is given by the functions between each type. This pipeline abstraction can be generalised to categories such that the pipeline is made up of objects and its implementation is given by the morphisms between them. This enable the use of kleisli morphisms for effectful programs. The pipeline can be further abstracted over graded categories enabling automatic composition of errors. Finally, I will show how to use dependent pipelines to allow composition of programs with type-dependency. An architecture particularly useful for single-pass compilers with well-scoped and well-typed implementations.

2025-01-27 15:00:00 UTC
LT412 and Online