我正在做一些关于内联和Alpha转换的自学,有些地方我在笔记上看不懂。
但是,由于内联表达式是函数体的副本, 它们的变量可能重复,因此必须进行α转换 再次。
请问有人可以给我一个示例,这些变量在内联扩展后重复出现吗?非常感谢你。
答案 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转换。