Let
Expresión let
Una expresión let se puede usar para capturar un valor de un cálculo intermedio en una variable.
let-expression:
let
variable-list in
expresión
variable-list:
variable
variable ,
variable-list
variable:
expresión variable-name =
variable-name:
identifier
En el ejemplo siguiente se muestran los resultados intermedios que se calculan y se almacenan en las variables x
, y
y z
, que después se usan en un cálculo x + y + z
posterior:
let x = 1 + 1,
y = 2 + 2,
z = y + 1
in
x + y + z
El resultado de esta expresión es el siguiente:
11 // (1 + 1) + (2 + 2) + (2 + 2 + 1)
Al evaluar expresiones dentro de let-expression, sucede lo siguiente:
Las expresiones de la lista variable definen un nuevo ámbito que contiene los identificadores de la producción variable-list y deben estar presentes al evaluar las expresiones dentro de las producciones variable-list. Las expresiones dentro de variable-list pueden hacerse referencia entre ellas.
Las expresiones dentro de variable-list se deben evaluar antes de que se evalúe la expresión de let-expression.
A menos que se acceda a las expresiones de variable-list, no se deben evaluar.
Los errores que se producen durante la evaluación de las expresiones de let-expression se propagan.
Una expresión let se puede considerar un revestimiento sintáctico sobre una expresión de registro implícita. La expresión siguiente es equivalente al ejemplo anterior:
[ x = 1 + 1,
y = 2 + 2,
z = y + 1,
result = x + y + z
][result]