我尝试在 Clojure 中执行以下操作
(map future exprs)
获取未来令牌的序列。不幸的是,这会出错,因为future
它本身就是一个宏,而不是一个函数。
有没有办法在保持map
语法的同时完成这项工作?我宁愿不使用for
宏(仅作为个人风格问题)。
我想我正在寻找一张mmap
或宏观地图。
我尝试在 Clojure 中执行以下操作
(map future exprs)
获取未来令牌的序列。不幸的是,这会出错,因为future
它本身就是一个宏,而不是一个函数。
有没有办法在保持map
语法的同时完成这项工作?我宁愿不使用for
宏(仅作为个人风格问题)。
我想我正在寻找一张mmap
或宏观地图。
正如 Marcin 所述,使用 lambda(匿名函数)
user=> (map and [true false 0 nil])
java.lang.Exception: Can't take value of a macro: #'clojure.core/and (NO_SOURCE_FILE:1)
user=> (map #(and %) [true false 0 nil])
(true false 0 nil)
编辑
顺便说一句,如果您正在使用map
创建一堆要在其他线程中执行的任务,您可能会遇到问题。map
是懒惰的,除非有东西要求,否则不会创建期货。您需要强制对其进行评估(这是在 repl 打印结果时在 repl 中发生的事情)或找到其他方式。