【发布时间】:2020-03-13 23:15:31
【问题描述】:
(defn eval-not
[input]
(cond
(and (seq? (second input)) (= 'and (first (second input)))) ;(do x here which -> (or (not x) (not y))
))
用户将输入 (eval-not '(not (and x y))) 并且我希望它返回 => (or (not x) (not y))。在保持 cond 使用的同时这是否可能。宁愿不使用宏,谢谢。
【问题讨论】:
-
如果您不使用宏,您认为
input会得到什么? -
宏可以做到这一点,但为什么呢?此外,只有宏可以重写代码,这就是您所要求的)。
-
一个函数可以接受引用列表
'(not (and x y))并返回引用列表'(or (not x) (not y)),我认为这是我们想要的。真正的问题是,除了“有可能吗?”之外没有其他问题,没有进行过尝试或研究。 -
我的尝试是上面写的代码。我在问如何开始这样做
标签: clojure