@hackage haquil0.2.1.14
A Haskell implementation of the Quil instruction set for quantum computing.
Categories
License
MIT
Maintainer
Brian W Bush <code@functionally.io>
Links
Versions
Installation
Dependencies (8)
- MonadRandom >=0.5.1
- base <5
- bv >=0.4.1
- data-binary-ieee754 >=0.4.4
- data-default >=0.7.1
- hTensor >=0.9.1 Show all…
Dependents (1)
@hackage/acme-everything
quil: An instruction set for quantum computing
This Haskell library implements the Quil language for quantum computing, as specified in "A Practical Quantum Instruction Set Architecture" <https://arxiv.org/abs/1608.03355/>, using the indexing conventions in <https://arxiv.org/abs/1711.02086/>.
Please report issues at <https://bwbush.atlassian.net/projects/HQUIL/issues/>.
Example
This example creates a wavefunction for the Bell state and then performs a measurement on its highest qubit.
> import Control.Monad.Random (evalRandIO)
> import Data.Qubit ((^^*), groundState, measure)
> import Data.Qubit.Gate (h, cnot)
> -- Construct the Bell state.
> let bell = [h 0, cnot 0 1] ^^* groundState 2
> bell
0.7071067811865475|00> + 0.7071067811865475|11> @ [1,0]
> -- Measure the Bell wavefunction.
> bell' <- evalRandIO $ measure [1] bell
> bell'
([(1,0)],1.0|00> @ [1,0])
> -- Measure it again.
> evalRandIO $ measure [1] bell'
([(1,0)],1.0|00> @ [1,0])
> -- Measure another Bell wavefunction.
> evalRandIO $ measure [1] bell
([(1,0)],1.0|00> @ [1,0])
> -- Measure another Bell wavefunction.
> evalRandIO $ measure [1] bell
([(1,1)],1.0|11> @ [1,0])