  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 program a diverse set of
non-trivial quantum algorithms, and can generate quantum gate representations
using trillions of gates. It is geared towards a model of computation that uses
a classical computer to control a quantum device, but is not dependent on any
particular model of quantum hardware. Quipper has proven effective and easy to
use, and opens the door towards using formal methods to analyze quantum
algorithms.
