我们可能可以以下这种方式支持简单的函数应用。
`
(defne substo [e new a out]
(['(var ~a) _ _ new])
(['(var ~y) _ _ '(var ~y)] (nom/hash a y))
(['(app ~rator ~rand) _ _ '(app ~rator-res ~rand-res)])
(substo rator new a rator-res)
(substo rand new a rand-res))
(['(lam ~(nom/tie c body)) _ _ '(lam ~(nom/tie c body-res))])
(nom/hash c a) (nom/hash c new)
(substo body new a body-res)))
`
如果在 unquote 中有一个序列,则我们知道我们有一个应用。所有函数符号都被保留不变,所有参数都被认为是新鲜变量或局部变量。