我正在尝试丰富数据,我为此提供的界面是一个网络表单。由于远程端的数据质量很差,我运行了一系列不同的搜索,直到找到匹配项。有时我会在第一个请求上获得成功,有时即使我尝试了 5 次不同的搜索,我也找不到任何东西。
我以为我可以使用 Clojures 惰性来缩短第一场比赛的搜索,但显然由于副作用,每次都要求所有 5 次不同的搜索。
这是我的问题的一个非常简单的再现:
(ns lazy-web-lookup.core
(:require [clj-http.client :as http]))
(defn found?
"Determines if the search was successful"
[result]
(= (:found result) "yes"))
(first (filter #(found? %) (map #(hash-map :no %
:found (:body (http/get "http://localhost/random"))) [1 2 3 4 5])))
http://localhost/random
随机返回字符串“yes”或“no”。
无论如何我可以调整上面的内容来做我想做的事,还是我叫错了树?