伪代码:理解约束让......
Pseudocode: Understanding constraints let ... in
我正在阅读一本关于基于约束的静态代码分析的书。 (名称:程序分析原理)在那里我找到了这段代码片段:
let f = fn x => x 7
g = fn y => y
h = fn z => 3
in f g + f (g h)
它将被解释为:
f g + f (g h)
| |
v v
g 7 f h
|
v
h 7
我明白为什么 f g
会是 g 7
。
但为什么 f (g h)
被解释为 f h
?应该是g h 3
,不是吗?
在表达式 f (g h)
中,首先 g h
被解释为 h
(根据 g
定义)然后应用 f
。
我正在阅读一本关于基于约束的静态代码分析的书。 (名称:程序分析原理)在那里我找到了这段代码片段:
let f = fn x => x 7
g = fn y => y
h = fn z => 3
in f g + f (g h)
它将被解释为:
f g + f (g h)
| |
v v
g 7 f h
|
v
h 7
我明白为什么 f g
会是 g 7
。
但为什么 f (g h)
被解释为 f h
?应该是g h 3
,不是吗?
在表达式 f (g h)
中,首先 g h
被解释为 h
(根据 g
定义)然后应用 f
。