Let

Espressione 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]