【发布时间】:2020-11-03 08:52:35
【问题描述】:
就像我想改造的练习:
(alist "foo" 1 "bar" 2 "baz" 3)
进入
(("foo" . 1) ("bar" . 2) ("baz" . 3))
这可以通过语法规则实现吗?
我的尝试:
(define-syntax alist
(syntax-rules ()
((_ a b) (cons a b))
((_ x y ...)
(list (alist x y) ...))))
它扩展成的问题:
(("foo" . 2) ("foo" . "bar") ("foo" . 4) ("foo" . "baz") ("foo" . 6))
可以使用语法规则来实现宏 alist 吗?它应该是什么样子?
编辑:
又一次尝试
(define-syntax alist
(syntax-rules ()
((_ a b) (cons a b))
((_ x y z ...)
(list (alist x y) (alist z ...)))))
它返回(("foo" . 2) (("bar" . 4) ("baz" . 6)))。
【问题讨论】: