上面的最后情况调用了第二个过程,它由函数`apply_procedure`来表达。为了调用由运算符记号命名的过程,这个运算符会在当前环境中查找。在上面的定义中,`env`是`Environment `类的实例,会在下一节中描述。`env.procedures`属性是个储存运算符名称和过程之间映射的字典。在 Logo 中,环境拥有单词的这种映射,并且没有局部定义的过程。而且,Logo 为过程名称和变量名称维护分离的映射,叫做分离的命名空间。但是,以这种方式复用名称并不推荐。
**过程调用。**过程调用以调用`apply_procedure`函数开始,它被传入由`logo_apply`查找到的函数,并带有代码的当前行和当前环境。Logo 中过程调用的过程比计算器中的`calc_apply`更加通用。特别是,`apply_procedure`必须检查打算调用的过程,以便在求解`n`个运算符表达式之前,判断它的参数数量`n`。这里我们会看到,为什么 Logo 解析器不能仅仅由语法分析构建表达式树,因为树的结构由过程决定。