如何解决如何在clojure / lisp中获取“ for”以仅返回值而不创建列表?
在Clojure中,运行以下代码:
(for [i (range 5)] i)
创建列表:
(0 1 2 3 4)
但是我想要for子句执行的只是输出每个数字而不创建列表。要实现此目的,我需要更改什么?
解决方法
clojure.core具有doseq
用于此目的:
user=> (doseq [i (range 5)] (println i))
0
1
2
3
4
nil
最后一个nil是在完成对所有值的处理之后,重新打印doseq调用的返回值
,由于我一直试图将列表的内容放在一个单独的列表中,因此,要做到这一点,我要做的就是用一个in子句包装外部列表,如下所示:
(into
'("original" "list" "contents" ...)
(for [i (range 5)] i))
确保关闭外部列表的括号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。