Дублирование переменных после встраивания - PullRequest
0 голосов
/ 13 января 2019

Я занимаюсь самостоятельным изучением встраивания и альфа-преобразования, и есть часть, которую я не могу понять в примечаниях.

Однако, поскольку встроенные выражения являются копиями тел функций, их переменные могут быть дублированы и поэтому должны быть α-преобразованы еще раз.

Может ли кто-нибудь дать мне пример, когда переменные дублируются после встроенного расширения, пожалуйста? Большое спасибо.

1 Ответ

0 голосов
/ 14 января 2019

Рассмотрим следующую программу.

let f x =
  let a = 42 in
  x + a

let () =
  let p = f 1 in
  let q = f 2 in
  print_int (p + q)

Если вы сделаете f встроенным, то вышеуказанная программа преобразуется, как показано ниже.

let () =
  let p =
    let a = 42 in
    1 + a
  in
  let q =
    let a = 42 in
    2 + a
  in
  print_int (p + q)

Тогда есть две переменные с именем a. Так что альфа-преобразование необходимо, если вы хотите, чтобы каждая переменная имела индивидуальное имя.

...