伪代码:理解约束让......

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