Skip to main content
1 of 3
Niel de Beaudrap
  • 12.4k
  • 1
  • 32
  • 72

The ZX calculus was not designed to be a programming language, or a language in which to specify things at a high level. It is a language for reasoning about things on a relatively low level, albeit without digging into the actual physics.

What it was designed for is hinted at in your observations, and by the name of the ZX calculus itself.

  • It can describe individual quantum gates: so it is a notation for circuits (and other quantum procedures — one of the things the ZX calculus was explicitly designed for was to analyse measurement based quantum computing; and its possible to show that it has a very close connection to lattice surgery).

  • It is a calculus : it is a notation in which you can actually do calculations. If you're good with reasoning about commutation relations, you can do this to a limited extent with ordinary circuit diagrams; for the ZX calculus you can in principle do this entirely with diagrams.

There are people who are working on higher-level ZX descriptions if procedures, which might become suitable to actually program with. But the existing version of the ZX calculus is more suitable for an intermediate representation of a compiler, or indeed performing computations or analysis by hand, than as a programming language.

Niel de Beaudrap
  • 12.4k
  • 1
  • 32
  • 72