Let
Un'espressione let consente di acquisire un valore da un calcolo intermedio in una variabile.
let-expression:
let
variable-list in
expression
variable-list:
Variabile
variable ,
variable-list
variable:
variable-name =
expression
variable-name:
identifier
Nell'esempio seguente vengono illustrati i risultati intermedi calcolati e archiviati nelle variabili x
, y
e z
, successivamente usate in un calcolo di tipo x + y + z
:
let x = 1 + 1,
y = 2 + 2,
z = y + 1
in
x + y + z
Il risultato di questa espressione è:
11 // (1 + 1) + (2 + 2) + (2 + 2 + 1)
Quando si valutano le espressioni all'interno di una let-expression, sono valide le considerazioni seguenti:
Le espressioni nell'elenco di variabili definiscono un nuovo ambito contenente gli identificatori della produzione variable-list e devono essere presenti quando si valutano le espressioni all'interno delle produzioni variable-list. Le espressioni all'interno di una variable-list possono fare riferimento l'una all'altra.
Le espressioni all'interno di una variable-list devono essere valutate prima che venga valutata l'espressione contenuta nella let-expression.
Le espressioni all'interno di una variable-list non devono essere valutate, se non quando si accede ad esse.
Gli errori generati durante la valutazione delle espressioni contenute in una let-expression vengono propagati.
Un'espressione let può essere considerata come espediente sintattico rispetto a un'espressione di record implicita. L'espressione seguente equivale all'esempio precedente:
[ x = 1 + 1,
y = 2 + 2,
z = y + 1,
result = x + y + z
][result]