关于clojure:防止字符串变量被解构

Keeping a string variable from being destructured

这里的问题很简单,但真的让我很困惑。

我这里有个小功能:

1
2
3
4
5
6
7
8
(defn something
  [start-url n]
  (loop [urls start-url index n]                                
    (if (= index 0)
      (set urls)
      (recur
        (flatten (pmap #(str *base-url* %) urls))
         (dec index)))))

我已经更改了代码的重要部分,但它基本上只需要映射一个字符串列表并重复出现。但是,当我开始循环时,urls 自然地将 start-string 解构为我不想要的字符列表。

同时,如果我这样做

1
(loop [urls '(start-url) index n]

不出所料,它会返回带有未评估起始 URL 的 seq。

我想要做的就是把我的 start-url 保存为一个字符串。有任何想法吗?它一定很简单,但唉,它在逃避我。


执行 (loop [urls [start-url] index n] ... 应该使 urls 成为包含单个字符串 start-url 的向量,而无需解构。

'(start-url) 不这样做的原因是引号适用于整个结构,包括 start-url(list start-url) 应该可以工作,但在这种情况下通常最好使用矢量。