Expresiones
En esencia, las expresiones de Q# son literales de valor o identificadores, donde los identificadores pueden hacer referencia a variables declaradas localmente o a elementos invocables declarados globalmente (actualmente no hay constantes globales en Q#). Se pueden usar operadores, combinadores y modificadores para combinarlos en una variedad más amplia de expresiones.
En cierto sentido, los operadores no son más que una sintaxis dedicada para determinados elementos invocables.
Aunque Q# no es todavía lo suficientemente expresivo como para capturar formalmente las funcionalidades de cada operador en forma de una declaración invocable de respaldo, esto debería corregirse en el futuro.
Los modificadores solo se pueden aplicar a determinadas expresiones. Se pueden aplicar uno o varios modificadores a expresiones que son identificadores, expresiones de acceso a elementos de matriz, expresiones de acceso a elementos con nombre o una expresión entre paréntesis que es la misma que una tupla de un solo elemento (consulte esta sección). Pueden preceder (prefijo) a la expresión o seguir (postfijo) a la expresión. Por lo tanto, son operadores unarios especiales que se enlazan de una forma más estricta que las llamadas de función u operación, pero menos estricta que cualquier tipo de acceso a elementos. En concreto, los functores son modificadores de prefijo, mientras que el operador de desencapsulado es un modificador de postfijos.
Igual que los modificadores, las llamadas a funciones y operaciones, así como el acceso a elementos, se pueden ver como un tipo especial de operador sujeto a las mismas restricciones con respecto a su aplicación; nos referimos a ellos como combinadores.
La sección sobre precedencia y asociatividad contiene una lista completa de todos los operadores, así como una lista completa de todos los modificadores y combinadores.