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)) 它返回