我正在读一本关于基于约束的静态代码分析的书。 (名称:程序分析原理)在那里我找到了这段代码:
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
,不应该吗?
答案 0 :(得分:1)
在表达式f (g h)
中,首先g h
被解释为h
(根据g
定义)并且应用了f
。