用Clojure解释惰性Pascal三角形

8

我发现了一种优雅的帕斯卡三角形实现方式,它使用了惰性序列。

(def pascal
  (iterate
   (fn [prev-row]
     (->>
      (concat [[(first prev-row)]] (partition 2 1 prev-row) [[(last prev-row)]])
      (map (partial apply +) ,,,)))
   [1M]))

有人能帮我理解这种上下文中的,,,吗?我尝试使用macroexpand,但效果不佳。我也知道它的使用不是必需的,但我想知道,,,的含义。

1个回答

13

在Clojure中,逗号被视为空格,因此Reader将完全忽略,,,。其存在的原因是为了使代码更易于人类阅读。

在这种情况下,->>宏将在调用(map ...)的最后位置插入(concat ...),即在,,,的位置。

,,,通常与->->>宏一起使用,以使代码更易于阅读,但实际上并不起任何作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接