【发布时间】:2017-06-04 14:14:50
【问题描述】:
我在 Clojure 中有一个关于 recur 的问题。如果我在循环中有一个 let 语句,recur 调用是否可以应用于 let 语句而不是循环的值? 例如,在这种情况下:
(defn someFunction [listA listB]
("do something here...."
[new-listA new-listB]))
(defn anotherFunction [listA listB]
("do something here...."
[new-listA new-listB]))
(defn myFunction [firstList secondList]
(loop [list1 (someMutation firstList)
list2 (someMutation secondList)]
(if (= "true" (someCondition))
(let [[newlist1 newlist2]
(someFunction list1 list2)]
(recur newlist1 newlist2))
(anotherFunction list1 list2) )))
(recur newlist1 newlist2) 是应用于循环还是应用于 let? 有没有办法跳过这个 let 语句并直接使用“someFunction”返回的两个值调用 recur,假设我不能改变“someFunction”返回一个带有两个参数的向量的事实?
【问题讨论】:
标签: loops recursion clojure let