内联后重复变量

时间:2019-01-13 18:55:34

标签: compiler-construction ocaml inline

我正在做一些关于内联和Alpha转换的自学,有些地方我在笔记上看不懂。

  

但是,由于内联表达式是函数体的副本,   它们的变量可能重复,因此必须进行α转换   再次。

请问有人可以给我一个示例,这些变量在内联扩展后重复出现吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

让我们考虑以下程序。

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的变量。因此,如果要每个变量都有一个单独的名称,则需要进行alpha转换。