内联后变量重复
Duplication of variables after inlining
我正在自学inlining和alpha conversion,笔记上有部分看不懂。
However, since inlined expressions are copies of function bodies,
their variables may be duplicated and therefore must be α-converted
again.
谁能给我一个内联扩展后变量重复的例子吗?非常感谢。
让我们考虑以下程序。
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 转换。
我正在自学inlining和alpha conversion,笔记上有部分看不懂。
However, since inlined expressions are copies of function bodies, their variables may be duplicated and therefore must be α-converted again.
谁能给我一个内联扩展后变量重复的例子吗?非常感谢。
让我们考虑以下程序。
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 转换。