, 每个参数)....一般, quoted 的参数可以是任意复杂的, 因为它们描述了每个参数的表达式. 事实上, AST 是一个简单 quoted expression 的深层结构, 就像我给你展示的那样....如果你记住了前面章节中所演示的例子, 那么就不会感到意外, 因为我提到过二进制运算符是作为二个参数的函数被 quoted....因此, 没有这些 guard 语句, 任何双参数的函数调用都会在我们的宏中结束, 这可能是我们不想要的. 使用这个 guard 语句能将输入限制在已知的二进制运算符中.
有趣的事情发生在第 9 行....所以, 当我们想生成一个二进制操作代码时, 我们需要注入一个正确的 AST, 它(如前所述)与双参数的函数调用相同.