(+ 23 42)
、 (f 23)
和 ((lambda (x) (+ x 42)) 23)
都是过程调用的实例,lambda 表达式和 let 表达式不是。这是因为尽管 let 是一个标识符,但它不是变量,而是一个句法关键字。第一个子表达式为句法关键字的 句法形式 遵守该关键字对应的特殊规则。定义中的 define 标识符也是一个句法关键字。因此,定义不是过程调用。
lambda 关键字定义的句法形式规则为:第一个子句法形式是参数列表,剩余的子句法形式是过程的躯体。在 let 表达式中,第一个子句法形式是一个指定绑定的列表,剩余子句法形式是躯体。
可以通过查看一个句法形式的第一个位置上的关键字来区分它是一个过程调用还是上述的这种特殊句法形式:如果第一个位置上不是一个句法关键字,则是一个过程调用(被称为 identifier macros 的东西也可以创建其它类型的特殊句法形式,但是它们相对来说并不常见)。Scheme 的句法关键字数量是比较少的,这也使得区分这两者没那么困难。事实上,Scheme 中是可以创建新句法关键字的。