Clojure - 如何返回序列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clojure - 如何返回序列?相关的知识,希望对你有一定的参考价值。
p-seq
:接收两个整数参数,“from”和“to”,此方法应该返回一个只包含is-p
函数在“from”和“to”之间给出的数字的序列。我写的当前代码只打印出“from”和“to”之间的所有数字。我想要p-seq来返回一个序列。
is-p
:如果数字是素数,则检查并返回true,否则返回false。
(defn p-seq [from to]
(loop [count from]
(if (> count to)
(println "")
(do
(def seqf (is-p count))
(if(= seqf true)
(print count " ")
)
(recur (inc count))))))
任何帮助赞赏。谢谢。
答案
您只需在序列上使用filter
函数,就可以对每个元素应用滤波器
给出检查素数的is-p
函数,
user=> (filter is-p (range 1 20))
(2 3 5 7 11 13 17 19)
所以,你的p-seq
函数看起来像,
user=> (defn p-seq [from to]
(filter is-p (range from to)))
#'user/p-seq
user=> (p-seq 100 200)
(101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199)
引用
https://clojuredocs.org/clojure.core/range
https://clojuredocs.org/clojure.core/filter
另一答案
由于你有一个谓词函数is-prime?
,你可以简单地用它来过滤from
和to
之间所有数字的范围:
(filter is-prime? (range 100 200))
=> (101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199)
注意range
的上限参数是独占的。
以上是关于Clojure - 如何返回序列?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过gen-class在Clojure中生成可序列化的java类?