在Hackerrank的clojure中使用println输出

时间:2014-10-10 11:55:41

标签: clojure output

您好我开始编写clojure代码并练习Hackerrank问题。

问题要求我输入

2
RGRG
BGYG

其中2是测试用例的数量,后跟2个字符串。

我编写了以下代码来获取输入并打印输出fullballs?是我的函数:

(defn Start [FuncToCall inputParse outputParse]
  (let [lines (line-seq (java.io.BufferedReader. *in*))
        input (rest lines)
        times (first lines)]
    (for [i (range (Integer. times))]
      (outputParse (FuncToCall (inputParse (nth input i)))))
    ))

(Start fullballs? 
       (fn [x] x)
       (fn [x]
         (if x
           (println "True")
           (println "False"))
         x))

但是,Hackerrank说stdout上没有任何内容。

此外,当我尝试int cider repl时,它不像通常那样

(False

False

false false)

我的两个测试用例..

for出现此问题或我的代码出错了吗?

1 个答案:

答案 0 :(得分:1)

for很懒。这意味着除非您强制评估结果,否则不会执行副作用。

这在你的REPL中起作用的原因是它试图打印出你的函数的结果。这迫使评估由for产生的惰性序列。

改为使用doseq

For further reading

我不理解你问题的后半部分:"对于我的两个测试用例,它并不像往常一样。"