MRo*_*lin 13 macros clojure higher-order-functions
我尝试在Clojure中执行以下操作
(map future exprs)
Run Code Online (Sandbox Code Playgroud)
获得未来令牌的seq.不幸的是,这个错误future
本身就是一个宏,而不是一个函数.
有没有办法在保持map
语法的同时完成这项工作?我宁愿不使用for
宏(只是个人风格).
我想我正在寻找一张mmap
或宏观地图.
Bil*_*ill 15
正如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)
Run Code Online (Sandbox Code Playgroud)
编辑
顺便说一句,如果您正在map
创建一系列要在其他线程中执行的任务,那么您可能会遇到问题.map
是懒惰的,直到事情要求它们才会创造未来.您需要强制对其进行评估(这是repl打印结果时在repl中发生的情况)或者找到其他方法.