Share via


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:
      letvariable-listinexpression
variable-list:
      variable
      variable
,variable-list
variable:
      variable-name
=expression
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]