Permitir

Expressão let

Uma expressão let pode ser usada para capturar um valor de um cálculo intermediário em uma variável.

expressão-let:
      letlista-de-variáveisinexpressão
lista-de-variáveis:
      variável
      variável
,lista-de-variáveis
variable:
      nome-da-variável
=expressão
nome-da-variável:
      identificador

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:

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

O resultado dessa expressão é:

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

Os seguintes preceitos são válidos ao avaliar expressões dentro da expressão-let:

  • 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. As expressões dentro de lista-de-variáveis podem se referir uma à outra.

  • As expressões dentro da lista-de-variáveis precisam ser avaliadas antes que a expressão na expressão-let seja avaliada.

  • A menos que as expressões na lista-de-variáveis sejam acessadas, elas não podem ser avaliadas.

  • Erros que são gerados durante a avaliação das expressões na expressão-let são propagados.

Uma expressão let pode ser vista como uma simplificação sintática em uma expressão de registro implícita. A seguinte expressão é equivalente ao exemplo acima:

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