Comments
Comments begin with two forward slashes (//
) and continue until the end of line.
Such end-of-line comments may appear anywhere in the source code.
Q# does not currently support block comments.
Documentation Comments
Comments that begin with three forward slashes, ///
,
are treated specially by the compiler when they appear before a type or callable declaration.
In that case, their contents are taken as documentation for the defined
type or callable, as for other .NET languages.
Within ///
comments, text to appear as a part of API documentation is
formatted as Markdown,
with different parts of the documentation indicated by specially-named
headers.
As an extension to Markdown, cross-references to operations, functions, and
struct types in Q# can be included using @"<ref target>,"
where <ref target>
is replaced by the fully qualified name of the
code object being referenced.
Optionally, a documentation engine may also support additional
Markdown extensions.
For example:
/// # Summary
/// Given an operation and a target for that operation,
/// applies the given operation twice.
///
/// # Input
/// ## op
/// The operation to be applied.
/// ## target
/// The target to which the operation is to be applied.
///
/// # Type Parameters
/// ## 'T
/// The type expected by the given operation as its input.
///
/// # Example
/// ```Q#
/// // Should be equivalent to the identity.
/// ApplyTwice(H, qubit);
/// ```
///
/// # See Also
/// - Microsoft.Quantum.Intrinsic.H
operation ApplyTwice<'T>(op : ('T => Unit), target : 'T) : Unit {
op(target);
op(target);
}
Q# recognizes the following names as documentation comment headers.
- Summary: A short summary of a function or operation's behavior or the purpose of a type. The first paragraph of the summary is used for hover information. It should be plain text.
- Description: A description of a function or operation's behavior or the purpose of a type. The summary and description are concatenated to form the generated documentation file for the function, operation, or type. The description may contain in-line LaTeX-formatted symbols and equations.
- Input: A description of the input tuple for an operation or function. May contain additional Markdown subsections indicating each element of the input tuple.
- Output: A description of the tuple returned by an operation or function.
- Type Parameters: An empty section that contains one additional subsection for each generic type parameter.
- Named Items: A description of the named items in a struct type. May contain additional Markdown subsections with the description for each named item.
- Example: A short example of the operation, function, or type in use.
- Remarks: Miscellaneous prose describing some aspect of the operation, function, or type.
- See Also: A list of fully qualified names indicating related functions, operations, or struct types.
- References: A list of references and citations for the documented item.