如何从 F# 调用 Q# 操作
How to call Q# operations from F#
我想用 F# 编写一个量子程序,但我不知道如何从 F# 调用 Q# 操作。我该怎么做呢?
我试过先阅读 C# 版本,但它似乎不能很好地转换为 F#。
TL;DR:您必须创建一个 Q# 库项目(这将生成一个 .csproj
项目,其中只有 Q# 文件)并从纯 F# 应用程序引用它。
不能在同一个项目中混用F#和Q#,因为编译不了:Q#编译成C#进行本地模拟,C#和F#不能在同一个项目中。但是,您可以有两个不同语言的独立项目,它们都编译为 MSIL 并且可以相互引用。
步骤是:
创建 Q# 库 QuantumCode
并在其中编写代码。
假设您的代码有一个带有签名 operation RunAlgorithm (bits : Int[]) : Int[]
的入口点(即,它接受一个整数数组作为参数,returns 另一个整数数组)。
创建一个 F# 应用程序(为简单起见,我们将其设为针对 .NET Core 的控制台应用程序)FsharpDriver
.
将对 Q# 库的引用添加到 F# 应用程序。
安装 NuGet 包 Microsoft.Quantum.Development.Kit,它将 Q# 支持添加到 F# 应用程序。
您不会在 FsharpDriver
中编写任何 Q# 代码,但您将需要使用 QDK 提供的功能来创建一个量子模拟器来 运行 您的量子代码,并定义用于将参数传递给量子程序的数据类型。
用F#写驱动。
// Namespace in which quantum simulator resides
open Microsoft.Quantum.Simulation.Simulators
// Namespace in which QArray resides
open Microsoft.Quantum.Simulation.Core
[<EntryPoint>]
let main argv =
printfn "Hello Classical World!"
// Create a full-state simulator
use simulator = new QuantumSimulator()
// Construct the parameter
// QArray is a data type for fixed-length arrays
let bits = new QArray<int64>([| 0L; 1L; 1L |])
// Run the quantum algorithm
let ret = QuantumCode.RunAlgorithm.Run(simulator, bits).Result
// Process the results
printfn "%A" ret
0 // return an integer exit code
我发布了项目代码的完整示例 here(最初该项目处理使用来自 VB.NET 的 Q#,但对于 F#,所有步骤都是相同的)。
我想用 F# 编写一个量子程序,但我不知道如何从 F# 调用 Q# 操作。我该怎么做呢?
我试过先阅读 C# 版本,但它似乎不能很好地转换为 F#。
TL;DR:您必须创建一个 Q# 库项目(这将生成一个 .csproj
项目,其中只有 Q# 文件)并从纯 F# 应用程序引用它。
不能在同一个项目中混用F#和Q#,因为编译不了:Q#编译成C#进行本地模拟,C#和F#不能在同一个项目中。但是,您可以有两个不同语言的独立项目,它们都编译为 MSIL 并且可以相互引用。
步骤是:
创建 Q# 库
QuantumCode
并在其中编写代码。假设您的代码有一个带有签名
operation RunAlgorithm (bits : Int[]) : Int[]
的入口点(即,它接受一个整数数组作为参数,returns 另一个整数数组)。创建一个 F# 应用程序(为简单起见,我们将其设为针对 .NET Core 的控制台应用程序)
FsharpDriver
.将对 Q# 库的引用添加到 F# 应用程序。
安装 NuGet 包 Microsoft.Quantum.Development.Kit,它将 Q# 支持添加到 F# 应用程序。
您不会在
FsharpDriver
中编写任何 Q# 代码,但您将需要使用 QDK 提供的功能来创建一个量子模拟器来 运行 您的量子代码,并定义用于将参数传递给量子程序的数据类型。用F#写驱动。
// Namespace in which quantum simulator resides open Microsoft.Quantum.Simulation.Simulators // Namespace in which QArray resides open Microsoft.Quantum.Simulation.Core [<EntryPoint>] let main argv = printfn "Hello Classical World!" // Create a full-state simulator use simulator = new QuantumSimulator() // Construct the parameter // QArray is a data type for fixed-length arrays let bits = new QArray<int64>([| 0L; 1L; 1L |]) // Run the quantum algorithm let ret = QuantumCode.RunAlgorithm.Run(simulator, bits).Result // Process the results printfn "%A" ret 0 // return an integer exit code
我发布了项目代码的完整示例 here(最初该项目处理使用来自 VB.NET 的 Q#,但对于 F#,所有步骤都是相同的)。