The Circ monad
Basic types
Basic gates
Reversible gates in functional style
Reversible gates in imperative style
Gates for state preparation and termination
Gates for classical circuits
User-defined gates
Dynamic lifting
Other circuit-building functions
Notation for controls
Signed items
Comments and labelling
Hierarchical circuits
Block structure
Ancillas
Automatic uncomputing
Controls
Loops
Operations on circuits
Reversing
Classical circuits
Ancilla uncomputation
Circuit transformers
User-definable transformers
Pre-defined transformers
An example transformer
Applying transformers to circuits
Auxiliary type definitions
Automatic circuit generation from classical code
Example
General lifting functions
Liftings of specific constants
List operations
Other operations
Extended quantum data types
Homogeneous quantum data types
Heterogeneous quantum data types
Shape-related operations
Quantum type classes