【发布时间】:2019-09-10 04:49:07
【问题描述】:
我正在尝试在 Scheme 中实现宏 -> 和 ->>,我的最终结果是:
;;
;; See https://clojuredocs.org/clojure.core/-%3E
;; for more info.
;;
(define-syntax ->
(syntax-rules ()
((_ a) a)
((_ a (b c ...)) (b a c ...))
((_ a b) (b a))
((_ a b c) (-> (-> a b) c))
((_ a b ... c) (-> (-> a b ...) c))))
;;
;; See https://clojuredocs.org/clojure.core/-%3E%3E
;; for more info.
;;
(define-syntax ->>
(syntax-rules ()
((_ a) a)
((_ a (b c ...)) (b c ... a))
((_ a b) (b a))
((_ a b c) (->> (->> a b) c))
((_ a b ... c) (->> (->> a b ...) c))))
我已经成功地进行了一些测试,但我不确定它是否 100% 正确以及是否 100% 优化。
正确吗?有没有办法优化这个?是我做的太多还是还是这样?
【问题讨论】: