In this paper, we develop a functional programming language for quantum computers, by extending the simply-typed lambda calculus with quantum types and operations. The design of this language adheres to the " quantum data, classical control " paradigm, following the first author's work on quantum flow-charts. We define a call-by-value operational semantics,… (More)
The field of quantum algorithms is vibrant. Still, there is currently a lack of programming languages for describing quantum computation on a practical scale, i.e., not just at the level of toy problems. We address this issue by introducing Quipper, a scalable, expressive, functional, higher-order quantum programming language. Quipper has been used to… (More)
This paper studies the linear fragment of the programing language for quantum computation with classical control described in . We sketch the language, and discuss equivalence of terms. We also describe a fully abstract denotational semantics based on completely positive maps.
Quipper is a recently developed programming language for expressing quantum computations. This paper gives a brief tutorial introduction to the language, through a demonstration of how to make use of some of its key features. We illustrate many of Quipper's language features by developing a few well known examples of Quantum computation , including quantum… (More)
The objective of this paper is to develop a functional programming language for quantum computers. We develop a lambda-calculus for the QRAM model, following the work of P. Selinger (2003) on quantum flow-charts. We define a call-by-value operational semantics, and we develop a type system using affine intuitionistic linear logic. The main result of this… (More)
Finding a denotational semantics for higher order quantum computation is a long-standing problem in the semantics of quantum programming languages. Most past approaches to this problem fell short in one way or another, either limiting the language to an unusably small finitary fragment, or giving up important features of quantum physics such as… (More)
We give a categorical semantics for a call-by-value linear lambda calculus. Such a lambda calculus was used by Selinger and Val-iron as the backbone of a functional programming language for quantum computation. One feature of this lambda calculus is its linear type system , which includes a duplicability operator " ! " as in linear logic. Another main… (More)
In this paper we use finite vector spaces (finite dimension, over finite fields) as a non-standard computational model of linear logic. We first define a simple, finite PCF-like lambda-calculus with booleans, and then we discuss two finite models, one based on finite sets and the other on finite vector spaces. The first model is shown to be fully complete… (More)
The Quipper language offers a unified general-purpose programming framework for quantum computation.