  This paper gives an introduction to and overview of the functional quantum
programming language QML. The syntax of this language is defined and explained,
along with a new QML definition of the quantum teleport algorithm. The
categorical operational semantics of QML is also briefly introduced, in the
form of annotated quantum circuits. This definition leads to a denotational
semantics, given in terms of superoperators. Finally, an implementation in
Haskell of the semantics for QML is presented as a compiler. The compiler takes
QML programs as input, which are parsed into a Haskell datatype. The output
from the compiler is either a quantum circuit (operational), an isometry (pure
denotational) or a superoperator (impure denotational). Orthogonality
judgements and problems with coproducts in QML are also discussed.
