PermitirLet

Expressão letLet expression

Uma expressão let pode ser usada para capturar um valor de um cálculo intermediário em uma variável.A let expression can be used to capture a value from an intermediate calculation in a variable.

expressão-let:let-expression:
      let lista-de-variáveis in expressão
lista-de-variáveis:
      variável
      variável
, lista-de-variáveis
variável:
      nome-da-variável
= expressão
nome-da-variável:
      identificador
      let variable-list in expression
variable-list:
      variable
      variable
, variable-list
variable:
      variable-name
= expression
variable-name:
      identifier

O seguinte exemplo mostra os resultados intermediários que estão sendo calculados e armazenados em variáveis x, y e z que, em seguida, são usados em um cálculo subsequente, x + y + z:The following example shows intermediate results being calculated and stored in variables x, y, and z which are then used in a subsequent calculation x + y + z:

let     x = 1 + 1,
        y = 2 + 2,     
        z = y + 1 
in
        x + y + z

O resultado dessa expressão é:The result of this expression is:

11  // (1 + 1) + (2 + 2) + (2 + 2 + 1)

Os seguintes preceitos são válidos ao avaliar expressões dentro da expressão-let:The following holds when evaluating expressions within the let-expression:

  • As expressões na lista de variáveis definem um novo escopo que contém os identificadores da produção lista-de-variáveis e precisa estar presente ao se avaliar as expressões dentro das produções de lista-de-variáveis.The expressions in the variable list define a new scope containing the identifiers from the variable-list production and must be present when evaluating the expressions within the variable-list productions. As expressões dentro de lista-de-variáveis podem se referir uma à outra.Expressions within the variable-list may refer to one-another.

  • As expressões dentro da lista-de-variáveis precisam ser avaliadas antes que a expressão na expressão-let seja avaliada.The expressions within the variable-list must be evaluated before the expression in the let-expression is evaluated.

  • A menos que as expressões na lista-de-variáveis sejam acessadas, elas não podem ser avaliadas.Unless the expressions in the variable-list are accessed, they must not be evaluated.

  • Erros que são gerados durante a avaliação das expressões na expressão-let são propagados.Errors that are raised during the evaluation of the expressions in the let-expression are propagated.

Uma expressão let pode ser vista como uma simplificação sintática em uma expressão de registro implícita.A let expression can be seen as syntactic sugar over an implicit record expression. A seguinte expressão é equivalente ao exemplo acima:The following expression is equivalent to the example above:

[     x = 1 + 1,
      y = 2 + 2,
      z = y + 1,
      result = x + y + z 
][result]