我试图在球拍中写一个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
我正在学习Scheme中的宏系统如何工作,并试图让我的代码看起来更加JavaScript-y。所以我想我会从function宏开始。这就是我想要一个函数定义一下: (function id (x) x)
,应该扩大到以下几点: (define (id x) x)
所以我写一个宏如下: (define-syntax function
(lambda (name args . bod
我正在学习Scheme中的宏系统,我认为实现curried函数将是一个好的开始。这是我制作的: (define-syntax function
(syntax-rules()
((_() body ...) (lambda() body ...))
((_ (param) body ...) (lambda (param) body ...))
((_
我不太了解Scheme中的define-syntax的参数和用法。为了它的价值,我使用了Petite Chez Cheme。我已经看了几个来源: define-syntax issue in scheme Scheme Macro for nesting expressions http://docs.racket-lang.org/guide/pattern-macros.html 然而,他们没
我该如何去做一个define-syntax-rule接受一个列表作为参数和一个列表(或一个报价,如果它是一个单一的元素)作为一个lambda的主体? 我想这样做: >(define a (lambdarize '(x y z) '(+ x y z)))
#<procedure>
>(a 1 2 3)
6
>(define b (lambdarize '(x)