dictionary - 将 "not"添加到 Clojure 序列中的每个项目

标签 dictionary clojure functional-programming lisp anonymous-function

我正在尝试将 (not(X)) 添加到序列中的所有项目 X

例如:

(a b) 转换为 ( (不是(a)) (不是(b)) )

当我使用 (map (fn [x] (not(x))) mylist) 时,它会尝试计算 not 并返回 bool 值。

当我使用 (map (fn [x] '(not(x))) mylist) 时,它只返回 (not(x)) 的列表无需实际放入列表的变量。

(a b) --> ( (not(a)) (not(b)) ) ?谢谢!

最佳答案

user=> (map (fn [x] (list 'not (list x))) '(a b))
((not (a)) (not (b)))

' 单引号运算符可以方便地制作列表,因为它可以防止评估,但它在您的情况下不可用,因为您在结果列表中包含要评估的内容。

另一个选项是 ` AKA quasiquote,它允许选择性取消引号,但也允许命名空间符号(再一次,在您的情况下没有用,您希望按字面意思使用符号)。

关于dictionary - 将 "not"添加到 Clojure 序列中的每个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940765/

相关文章:

java - 主要的 Clojure NPE

vector - 如何访问向量向量中的特定元素 clojure

javascript - Ramda.js - 切片数组的内部值

java - 获取异常 : com. google.gson.JsonSyntaxException : com. google.gson.stream.MalformedJsonException:预计 ':' 在第 1 行第 24 列

c++ - 为什么 map 会比 unordered_map 快得多?

python - 如何遍历整个字典键?

scala - 将阿拉伯数字转换为中文财务数字

javascript数组转换为键值空格分隔的字符串

clojure - 非法参数异常 : No single method in defprotocol

javascript - 使用 RxJS 进行响应式编程 - 这个滚动功能可以简化吗?