LetLet

Выражение letLet expression

Выражение let можно использовать для записи значения из промежуточного вычисления в переменную.A let expression can be used to capture a value from an intermediate calculation in a variable.

выражение-let:let-expression:
      let список-переменных in выражение
список-переменных:
      переменная
      переменная
, список-переменных
переменная:
      имя-переменной
= выражение
имя-переменной:
      идентификатор
      let variable-list in expression
variable-list:
      variable
      variable
, variable-list
variable:
      variable-name
= expression
variable-name:
      identifier

В следующем примере показаны промежуточные результаты, вычисляемые и хранимые в переменных x, y и z, которые используются в последующих вычислениях 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

Результат этого выражения:The result of this expression is:

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

При вычислении выражений в выражении let происходит следующее.The following holds when evaluating expressions within the let-expression:

  • Выражения в списке переменных определяют новую область, содержащую идентификаторы из вывода списка переменных, и должны присутствовать при вычислении выражений в выводе списка переменных.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. Выражения в списке переменных могут ссылаться друг на друга.Expressions within the variable-list may refer to one-another.

  • Выражения в списке переменных должны вычисляться до вычисления выражения в выражении let.The expressions within the variable-list must be evaluated before the expression in the let-expression is evaluated.

  • Если выражения в списке переменных не доступны, они не должны вычисляться.Unless the expressions in the variable-list are accessed, they must not be evaluated.

  • Ошибки, возникающие во время вычисления выражений в выражении let, распространяются.Errors that are raised during the evaluation of the expressions in the let-expression are propagated.

Выражение let можно рассматривать как синтаксический сахар для неявного выражения записи.A let expression can be seen as syntactic sugar over an implicit record expression. Следующее выражение эквивалентно приведенному выше примеру:The following expression is equivalent to the example above:

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