F # - Precedência de operadores

A tabela a seguir mostra a ordem de precedência dos operadores e outras palavras-chave de expressão na linguagem F #, da precedência mais baixa para a precedência mais alta.

Operador Associatividade
Como Certo
quando Certo
| (tubo) Esquerda
; Certo
deixei Não associativo
função, diversão, combinar, tentar Não associativo
E se Não associativo
Certo
: = Certo
, Não associativo
ou, || Esquerda
&, && Esquerda
<op,> op, =, | op, & op Esquerda
&&&, |||, ^^^, ~~~, <<<, >>> Esquerda
^ op Certo
:: Certo
:?>,:? Não associativo
- op, + op, (binário) Esquerda
* op, / op,% op Esquerda
** op Certo
fx (aplicativo de função) Esquerda
| (correspondência de padrão) Certo
operadores de prefixo (+ op, -op,%, %%, &, &&,! op, ~ op) Esquerda
. Esquerda
f (x) Esquerda
f <tipos> Esquerda

Exemplo

let a : int32 = 20
let b : int32 = 10
let c : int32 = 15
let d : int32 = 5

let mutable e : int32 = 0
e <- (a + b) * c / d // ( 30 * 15 ) / 5
printfn "Value of (a + b) * c / d is : %d" e

e <- ((a + b) * c) / d // (30 * 15 ) / 5
printfn "Value of ((a + b) * c) / d is : %d" e

e <- (a + b) * (c / d) // (30) * (15/5)
printfn "Value of (a + b) * (c / d) is : %d" e

e <- a + (b * c) / d // 20 + (150/5)
printfn "Value of a + (b * c) / d is : %d" e

Quando você compila e executa o programa, ele produz a seguinte saída -

Value of (a + b) * c / d is : 90 
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90 
Value of a + (b * c) / d is : 50