Macros 具有2个参数的Scheme宏

Macros 具有2个参数的Scheme宏,macros,scheme,Macros,Scheme,我是否可以定义一个宏,该宏将从宏的左侧获取一个参数,从右侧获取一个参数?我想在我的程序中写一些这样的东西: (test = 10) 定义新变量的步骤 我试着写那个宏: (define-syntax = (syntax-rules () ((a _ b) (define a b)))) 但是我在:=“中遇到了错误“语法错误”,因为表单是由第一个元素决定的,您可能会遇到未绑定test的问题 正确的方法是: (= test 10) 您可以这样编写宏: (define-sy

我是否可以定义一个宏,该宏将从宏的左侧获取一个参数,从右侧获取一个参数?我想在我的程序中写一些这样的东西:

(test = 10)
定义新变量的步骤 我试着写那个宏:

(define-syntax = 
  (syntax-rules ()
    ((a _ b)
     (define a b))))

但是我在:=“

中遇到了错误“语法错误”,因为表单是由第一个元素决定的,您可能会遇到未绑定
test
的问题

正确的方法是:

(= test 10)
您可以这样编写宏:

(define-syntax = 
  (syntax-rules () 
    ((_ a b) (define a b))))

好了。没有可怕的中缀语法

这可能部分取决于您使用的方案实现。您使用的是什么方案实现?此外,这个词是“中缀”,如:“我想将中缀运算符定义为宏”。用这种方法搜索可能会更幸运。即使使用宏,操作符也是第一位的。在宏中,
=
必须是第一个元素,因此不能使lisp中缀和Algol那样奇怪