An embedded, scalable functional programming language for quantum computing.
Quipper is an embedded, scalable functional programming language for quantum computing. It provides, among other things:
A high-level circuit description language. This includes gate-by-gate descriptions of circuit fragments, as well as powerful operators for assembling and manipulating circuits.
A monadic semantics, allowing for a mixture of procedural and declarative programming styles.
Built-in facilities for automatic synthesis of reversible quantum circuits, including from classical code.
Support for hierarchical circuits.
Extensible quantum data types.
Programmable circuit transformers.
Support for three execution phases: compile time, circuit generation time, and circuit execution time. A dynamic lifting operation to allow circuit generation to be parametric on values generated at circuit execution time.
Extensive libraries of quantum functions, including: libraries for quantum integer and fixed-point arithmetic; the Quantum Fourier transform; an efficient Qram implementation; libraries for simulation of pseudo-classical circuits, Stabilizer circuits, and arbitrary circuits; libraries for exact and approximate decomposition of circuits into specific gate sets.
This package contains the rendering part, which has been separated to reduce dependencies in quipper-core.