语法 - 规则语法

Hep*_*lar 1 scheme racket

我一直在寻找定义语法规则的语法,但我仍然卡住了.

我想用这个签名定义一个规则:(define-syntax-rule(for {val in lst} return res).

基本上它只是应用val和lst的地图.但我正在努力学习语法.这就是我到目前为止所提出的......(syntax-rules()((对于lst中的val)(map(val lst))))...

输入将是这样的:

(对于{val in'(0 1 2 3 4)} return( - val 1))

并输出(-1 0 1 2 3),就像在列表中调用了map一样.

GoZ*_*ner 6

这样就完成了:

(define-syntax for
  (syntax-rules (in return)
    ((for val in list return exp)
     (map (lambda (val) exp) list))))

> (for x in '(0 1 2 3) return (- x 1))
(-1 0 1 2)
Run Code Online (Sandbox Code Playgroud)

基本上这正是你所描述的.你需要inreturn声明为文字.