你好,
我有一个写一个函数的任务,该函数打印单链表的笛卡尔积。
这是讲师给我的,它完美运行,但我就是不懂它是怎么工作的。更具体地说,我搞不清楚这条线(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))))))