因此,我们有一个量子λ演算(它是线性的),这是许多量子编程语言的基础。“量子编程语言在线性类型理论中捕捉了量子计算的思想”(Staton,2015)
''是用于量子计算的功能编程语言。Proto-Quipper是一种旨在为震颤提供正式基础的语言家族。在本文中,我们用一种称为动态提升的构造扩展了原始Quipper-M,该构造中存在于震颤中。凭借作为电路描述语言,原始电波器有两个单独的运行时间:电路生成时间和电路执行时间。在电路生成时间已知的值称为参数,在电路执行时间已知的值称为状态。动态提升是一个使状态(例如测量结果)提升到参数的操作,它可以在其中影响电路的下一个部分的生成。因此,动态提升使原始程序可以交流经典和量子计算。我们描述了我们称为原始Quipper-dyn语言的语法。其类型系统使用模式系统来跟踪动态提升的使用。我们还提供了一种基于丰富类别理论的动态提升的操作语义以及一种抽象的分类语义。我们证明类型系统和操作语义相对于我们的分类语义都是合理的。最后,我们提供了一些原始Quipper-Dyn程序的示例,这些程序可以利用动态提升。
量子计算机原则上可以在基于现代计算基础架构的某些关键任务上优于常规计算机。实验量子计算处于早期阶段,现有设备尚不适合实用计算。然而,在学术界和工业中,几个研究人员现在都在构建量子计算机(例如,参见[2,12,17])。量子计算还为编程语言社区提出了许多具有挑战性的问题[18]:我们应该如何设计用于量子计算的编程语言?我们应该如何编译和优化量子程序?我们应该如何测试和验证量子程序?我们应该如何理解量子编程语言的语义?在本文中,我们专注于使用依赖线性的功能语言原始Quipper-D进行量子电路编程。量子力学的无键属性指出,通常不能复制量子的状态。许多现有的量子编程语言,例如Quipper [10,11],Qiskit [22],Q#[28],CIRQ [5]或ProjectQ
原则上,量子计算机可以在现代计算基础设施所依赖的某些关键任务上胜过传统计算机。实验性量子计算尚处于早期阶段,现有设备尚不适合实际计算。不过,学术界和工业界的一些研究人员正在构建量子计算机(例如,参见 [2,11,16])。量子计算也向编程语言社区提出了许多具有挑战性的问题 [17]:应如何设计用于量子计算的编程语言?应如何编译和优化量子程序?应如何测试和验证量子程序?应如何理解量子编程语言的语义?在本文中,我们重点研究使用线性依赖类型函数式语言 Proto-Quipper-D 进行量子电路编程。量子力学的不可克隆特性表明,通常无法复制量子比特的状态。许多现有的量子编程语言,如 Quipper[9,10]、QISKit [21]、Q# [26]、Cirq [5] 或 ProjectQ [25],都没有强制执行此属性。因此,程序员必须确保程序中对量子位的引用不会重复或丢弃。线性类型已用于资源感知编程 [7,27],现在众所周知
