您好,
我有一个任务要编写一个函数,该函数可打印单个链表的笛卡尔积。
这是我的导师给我们分享的,它运行得很好,但我就是不明白它是如何工作的。更具体地说,我无法理解 func (:data node) 这行代码。我知道它能给出节点的数据,那 func 是做什么的?
slist-cartesian 函数对我来说完全令人困惑。
请向我解释它是如何工作的。
感谢您!
(defn slist-iter [lst func]
(loop [node (deref (:head lst))]
(if (not (nil? node))
(do
(func (:data node))
(recur (deref (:next node)))))))
(defn slist-cartesian [lst]
(slist-iter
lst
(fn [x]
(slist-iter
lst
(fn [y]
(println x y))))))