jua*_*ana 3 macros scheme racket
我想更改以下表达式的语法:
(> 2 1)
Run Code Online (Sandbox Code Playgroud)
类似于:
(2 greater 1)
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试是以下宏:
(define-syntax greater
(lambda (x)
(syntax-case x (greater)
[(a greater b)
(syntax (> a b))])))
Run Code Online (Sandbox Code Playgroud)
使用此宏失败:"语法错误:更大"
我一直在浏览一些Scheme文档,但我找不到这样做的方法.
表达式(2 greater 1)是一个应用程序.它扩展到(#%app 2 greater 1).你必须定义自己的版本,#%app然后调用它my-%app.如果greater存在则交换第一个和第二个参数,否则只需扩展到标准#%app.
要使用新应用程序,必须从定义它的文件(模块)中导出它,然后将其导入到需要特殊应用程序语法的模块中.