define-syntax

    3熱度

    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

    0熱度

    2回答

    我正在學習Scheme中的宏系統如何工作,並試圖讓我的代碼看起來更加JavaScript-y。所以我想我會從function宏開始。這就是我想要一個函數定義一下: (function id (x) x) ,應該擴大到以下幾點: (define (id x) x) 所以我寫一個宏如下: (define-syntax function (lambda (name args . bod

    3熱度

    2回答

    我正在學習Scheme中的宏系統,我認爲實現curried函數將是一個好的開始。這是我製作的: (define-syntax function (syntax-rules() ((_() body ...) (lambda() body ...)) ((_ (param) body ...) (lambda (param) body ...)) ((_

    0熱度

    1回答

    我不太瞭解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 然而,他們沒

    2熱度

    2回答

    我剛開始潛入球拍宏,並試圖製作一個簡潔的宏 - 宏定義宏。我想擴大這樣的表達式: (macro id (param) replacement1 (params ...) replacement2) 弄成這個樣子: (define-syntax id (syntax-rules() ((id param) replacement1) ((id

    4熱度

    2回答

    拍微距我希望能夠寫:的 (nota E2 82) 代替: (define E2 (network() [sunet <= sine-wave 82] [out = (+ sunet)])) 我知道我能做到這一點使用宏,並試圖寫: (define-syntax (nota stx) (syntax-case stx() [(nota

    4熱度

    2回答

    我發現自己定義與除了自己的名字相同的定義語法參數,所以我決定寫一個宏,使這個簡單的: (define-syntax (test-case-parameter stx) (syntax-parse stx [(_ parameter:id) #'(define-syntax-parameter parameter (lambda (stx) (

    1熱度

    1回答

    我該如何去做一個define-syntax-rule接受一個列表作爲參數和一個列表(或一個報價,如果它是一個單一的元素)作爲一個lambda的主體? 我想這樣做: >(define a (lambdarize '(x y z) '(+ x y z))) #<procedure> >(a 1 2 3) 6 >(define b (lambdarize '(x)

    2熱度

    1回答

    從雞方案手冊: 定義語法評估在不同膨脹環境的步驟(最初具有訪問方案模塊的出口標識符) 是否有可能注入用戶功能到擴展環境? (define-syntax my-macro (er-macro-transformer (lambda (exp rename compare) (user-function exp)))

    0熱度

    1回答

    我寫了下面的Scheme宏。 (define-syntax join (syntax-rules() ((join (var ...) (val ...) ...) '(((var val) ...) ...)))) 當我嘗試它 (join (a b c) (1 2 3) (2 4 6) (3 6 9)) 它返回