An embedding of quantum computation as a Haskell arrow.
This module is a loose port of the Quantum::Entanglement Perl module, which endows its host language with quantum-computationesque effects. In this Haskell version this is done using an arrow to take advantage of the arrow syntax for imperative-looking code. The module has all the fun bells and whistles of quantum computation, including entanglement and interference, even through conditionals (which the Perl analog does not support). The arrow is defined over any instance of MonadRandom, so if you want to get especially crazy, you can experiment with what quantum computation is like when observables include invoking continuations. See the included example.hs for some simple examples of what using this module looks like.