Some QVM types include a MAKE-FOO-QVM convenience function to create a QVM of the given type, while others do not. It would be nice(tm) if the interface was consistent. Currently, the following QVM types include a MAKE- function:
QVM type
exists?
make-qvm
yes
make-density-qvm
yes
make-stabilizer-qvm
yes
make-mixed-state-qvm
yes
While these do not:
QVM type
exists?
make-base-qvm
no
make-basic-noise-qvm
no
make-channel-qvm
no
make-depolarizing-qvm
no
make-noisy-qvm
no
The ultimate goal is just to have some consistent and convenient way to create QVMs. Given that dropping existing MAKE- functions is awkward for backwards compat, we might add MAKE- functions for the QVMs that are missing them. Alternatively, we might deprecate the MAKE-FOO-QVM interface and beef up the INITIALIZE-INSTANCE methods so that the MAKE- functions are no longer needed.
Additionally, we might consider homogenizing the MAKE-FOO lambda lists (to the extent possible). For example, currently MAKE-DENSITY-QVM and MAKE-MIXED-STATE-QVM allow the caller to pass in an ALLOCATION, whereas MAKE-QVM and MAKE-STABILIZER-QVM do not.
Some QVM types include a
MAKE-FOO-QVM
convenience function to create a QVM of the given type, while others do not. It would be nice(tm) if the interface was consistent. Currently, the following QVM types include aMAKE-
function:While these do not:
The ultimate goal is just to have some consistent and convenient way to create QVMs. Given that dropping existing
MAKE-
functions is awkward for backwards compat, we might addMAKE-
functions for the QVMs that are missing them. Alternatively, we might deprecate theMAKE-FOO-QVM
interface and beef up theINITIALIZE-INSTANCE
methods so that theMAKE-
functions are no longer needed.Additionally, we might consider homogenizing the
MAKE-FOO
lambda lists (to the extent possible). For example, currentlyMAKE-DENSITY-QVM
andMAKE-MIXED-STATE-QVM
allow the caller to pass in anALLOCATION
, whereasMAKE-QVM
andMAKE-STABILIZER-QVM
do not.