【发布时间】:2014-12-07 23:56:30
【问题描述】:
我正在实现一个宏来做列表推导
(define-syntax list-comp
(syntax-rules (for in if)
[(list-comp <expr> for <var> in <list>)
(map (lambda (<var>) <expr>) <list>)]
[(list-comp <expr> for <var> in <list> if <cond>)
(map (lambda (<var>) <expr>)
(filter (lambda (<var>) <cond>) <list>))]))
我想修改这个宏,让它可以接受任意数量的列表。
例如
(+ l1 l2) for in List1 List2 将返回在每个列表中添加每个元素的总和
并且还应该与(+ l1 l2 l3...) for in list1 list2 list3 等一起使用...
【问题讨论】:
-
你这样做只是为了好玩吗? Racket 自带much more general comprehensions 系统,你尝试重新实现它是没有意义的。
-
是的,只是想学习宏