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

时间:2017-03-24 17:21:05

标签: constraints static-code-analysis

我正在读一本关于基于约束的静态代码分析的书。 (名称:程序分析原理)在那里我找到了这段代码:

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,不应该吗?

1 个答案:

答案 0 :(得分:1)

在表达式f (g h)中,首先g h被解释为h(根据g定义)并且应用了f