# Quantum programming via algebraic effects: cross-fertilization between quantum and probabilistic programming

This project is about programming languages for quantum computation based on the recent framework of algebraic effects.

Algebraic effects are a recent framework that allows the programmer to separate the main structure of the program from specific and detailed choices about how it will be run. This is useful in practice, but also has an important theoretical role, because once the separation is made, the theoretician can also develop mathematical models of specific computational phenomena separate from the general aspects of programming practice.

This is important in quantum programming, where it is important to manage the passage from the high level structure of quantum algorithms down to the low level intricacies of quantum hardware, simulation, and quantum theory.

The key direction for this project is to make progress on quantum programming by building on another form of programming: probabilistic programming for statistical modelling. This is a technology that allows statisticians and data scientists to quickly build complex models. Algebraic effects have recently been applied to probabilistic programming to allow fine-grained methods of modelling.