我发现一个unless宏的例子在写朱莉娅here如下: macro unless(test, branch)
quote
if !$test
$branch
end
end
end
然而,当我尝试使用它,它失败(显然存在卫生问题,但我想不出它完全)。下面是我使用的测试: x, y = 0, 1
@unless (x == 5) begin
至于朱莉娅0.4.2 macro g(y)
:((x, $y, $(esc(y))))
end
x = 1
function t()
x = 2
println(macroexpand(:(@g(x))))
println(@g(x))
end
t()
println(x)
>>>
(x,x,x)
(2,2,2)
1
我所预料的
我试图在球拍中写一个define-let宏,它可以“保存”(let ((var value) ...) ...)的头部,也就是(var value) ...的一部分,并允许稍后重新使用它。 下面按预期工作的代码: #lang racket
;; define-let allows saving the header part of a let, and re-use it later
(de