Statements
Q# distinguishes between statements and expressions. Q# programs consist of a mixture of classical and quantum computations, and the implementation looks much like any other classical programming language. Some statements, such as the let
and mutable
bindings, are well-known from classical languages, while others, such as conjugations or qubit allocations, are unique to the quantum domain.
The following statements are currently available in Q#:
Call statement
A call statement consists of an operation or function call returningUnit
. The invoked callable needs to satisfy the requirements imposed by the current context. See Call statements for more details.Return statement
A return statement terminates the execution within the current callable context and returns control to the caller. Any finalizing tasks are run after the return value is evaluated but before control is returned. See Returns and termination for more details.Fail statement
A fail statement stops the entire program and collects information about the current program state before terminating in an error. It aggregates the collected information and presents it to the user along with the message specified as part of the statement. See returns and termination for more details.Variable declaration
Defines one or more local variables that are valid for the remainder of the current scope, and binds them to the specified values. Variables can be permanently bound or declared to be reassignable later on. See Variable declarations and reassignments for more details.Variable reassignment
Variables that have been declared as being reassignable can be rebound to contain different values. See Variable declarations and reassignments for more details.Iteration
An iteration is a loop-like statement that, during each iteration, assigns the declared loop variables to the next item in a sequence (a value of array orRange
type) and runs a specified block of statements. See Iterations for more details.While statement
If a specified condition evaluates totrue
, a block of statements is run. The statements are run until the condition evaluates tofalse
. See Conditional loops for more details.Repeat statement
A quantum-specific loop that breaks based on a condition. The statement consists of an initial block of statements that is run before a specified condition is evaluated. If the condition evaluates tofalse
, an optional subsequentfixup
block is run before entering the next iteration of the loop. The loop only terminates when the condition evaluates totrue
. See Conditional loops for more details.If statement
The if statement consists of one or more blocks of statements, each preceded by a boolean expression. The first block in which the boolean expression evaluates totrue
is run. Optionally, you can specify a block of statements that will run if none of the conditions evaluate totrue
. See Conditional branching for more details.Conjugation
A conjugation is a special quantum-specific statement, where a block of statements that applies a unitary transformation to the quantum state is run, followed by another statement block, before the transformation applied by the first block is reverted again. In mathematical notation, conjugations describe transformations of the form U†VU to the quantum state. See Conjugations for more details.Qubit allocation
Instantiates and initializes qubits, or arrays of qubits, binds them to the declared variables and runs a block of statements. The instantiated qubits are available for the duration of the block, and will be automatically released when the statement terminates. See Quantum memory management for more details.
Feedback
Submit and view feedback for