Expressions
Au cœur, les expressions Q# sont des littéraux de valeur ou des identificateurs, où les identificateurs peuvent faire référence à des variables déclarées localement ou à des callables (appelables) déclarés globalement (il n’existe actuellement aucune constante globale dans Q#). Les opérateurs, les combinateurs et les modificateurs permettent de les combiner afin d’obtenir un éventail plus vaste d’expressions.
Les opérateurs correspondent à une syntaxe dédiée pour des callables spécifiques.
Même si Q# n’est pas suffisamment expressif pour capturer formellement les fonctionnalités de chaque opérateur sous forme de déclaration de callable, cela devrait être corrigé à l’avenir.
Les modificateurs ne peuvent être appliqués qu’à certaines expressions. Un ou plusieurs modificateurs peuvent être appliqués à des expressions correspondant à des identificateurs, des expressions d’accès à des éléments de tableau, des expressions d’accès à des éléments nommés, ou une expression entre parenthèses qui est identique à un tuple d’élément (voir cette section). Ils peuvent précéder (préfixe) l’expression ou suivre (suffixe) l’expression. Il s’agit donc d’opérateurs unaires spéciaux qui se lient plus étroitement que les appels de fonction ou d’opération, mais moins étroitement que tout type d’accès aux éléments. Concrètement, les foncteurs sont des modificateurs de préfixe, tandis que les opérateur unwrap sont des modificateurs de suffixe.
Comme les modificateurs, les appels de fonction et d’opération, ainsi que l’accès aux éléments, peuvent être considérés comme un type spécial d’opérateur soumis aux mêmes restrictions quant à l’endroit où ils peuvent être appliqués, et nous les qualifions de combinateurs.
La section relative à la priorité et à l’associativité contient une liste complète de tous les opérateurs, ainsi qu’une liste complète de tous les modificateurs et combinateurs.