我試圖在球拍中寫一個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)