我被要求用球拍写一个程序,以便将算术运算符的行为从前缀更改为后缀。更准确地说:我希望这段代码:(a b +)的行为像:(+ a b) 我想使用define-syntax-rule来改变+运算符的行为,但我有一个问题,在使用define-syntax-rule时,我们首先写入宏的名称,然后再写参数。我的问题是:有没有办法在球拍函数中写出开头的参数和最后的名字?
我正在尝试在球拍中创建一个switch语句宏。我很难搞清楚该怎么做。我希望能够使用如下所示的函数。
(define x 99)
(switch x
[3 (displayln "x is 3")]
[4 (displayln "x is 4")]
[5 (displayln "x is 5")]
['default (displayln "none of the above")])
我尝试过使用带语法大小写的模式匹配,但我不确定这是不是正确的方法。
#define EVAL1(...) __VA_ARGS__
#define RECURSE() I am recursive, look: _RECURSE()()
#define _RECURSE() RECURSE
I expected:
EVAL1(RECURSE())
=> EVAL1(I am recursive, look: _RECURSE()())
=> EVAL1(I am recursive, look: RECURSE())
=> I am recursive, look: RECURSE()
=> I am recursive, look:I
我正在尝试找到一种在球拍中使用多种语言模型来编写程序的方法。例如,我用球拍写了一个c程序,如下所示:
#lang c
#include <stdio.h>
int main() {
int a = 1;
printf("%d\n", a);
return 0;
}
那么有没有可能在球拍程序中把python代码放在上面的c代码之后,这样球拍程序看起来就像:
#lang c
#include <stdio.h>
int main() {
int a = 1;
printf("%d\n", a);