Espressioni

Essenzialmente, le espressioni Q# sono valori letterali o identificatori, in cui gli identificatori possono fare riferimento a variabili dichiarate localmente o a variabili chiamabili dichiarate a livello globale (attualmente non sono presenti costanti globali in Q#). È possibile usare operatori, combinatori e modificatori per combinarli in un'ampia gamma di espressioni.

  • Gli operatori in un certo senso non sono altro che una sintassi dedicata per particolari elementi chiamabili.

    Anche se Q# non è ancora sufficientemente espressivo da acquisire formalmente le funzionalità di ogni operatore sotto forma di dichiarazione chiamabile di supporto, questa lacuna dovrebbe essere colmata in futuro.

  • I modificatori possono essere applicati solo a determinate espressioni. È possibile applicare uno o più modificatori alle espressioni che sono identificatori, espressioni di accesso a elementi di matrice, espressioni di accesso a elementi denominati o un'espressione racchiusa tra parentesi che equivale a una tupla con un singolo elemento (vedere questa sezione). Possono precedere (prefisso) l'espressione o seguire (suffisso) l'espressione. Sono quindi operatori unari speciali con una associazione più stretta rispetto alle chiamate di funzione o di operazione, ma meno stretta di qualsiasi tipo di accesso agli elementi. In concreto, i funtori sono modificatori di prefisso, mentre l'operatore unwrap è un modificatore di suffisso.

  • Come i modificatori, le chiamate di funzione e di operazione, nonché l'accesso agli elementi possono essere visti come un tipo speciale di operatore soggetto alle stesse restrizioni relative alla posizione di applicazione. Sono noti come combinatori.

La sezione relativa a precedenza e associatività contiene un elenco completo di tutti gli operatori, nonché un elenco completo di tutti i modificatori e combinatori.