非常感谢所有美丽的答案!不能只标记一个是正确的
注意:已经是wiki
我是函数式编程的新手,虽然我可以在函数式编程中读取简单的函数,例如计算数字的阶乘,但我发现很难阅读大函数.部分原因是因为我无法在函数定义中找出较小的代码块,部分原因是因为我( )
在代码中难以匹配.
如果有人能够引导我阅读一些代码并给我一些关于如何快速破译某些代码的提示,那将是很棒的.
注意:如果我盯着它看了10分钟,我就能理解这段代码,但我怀疑这段代码是用Java编写的,我需要10分钟.因此,我认为在Lisp样式代码中感觉舒服,我必须更快地完成它
注意:我知道这是一个主观问题.我并不是在寻求任何可证实的正确答案.只是评论你如何阅读这些代码,欢迎并非常有帮助
(defn concat
([] (lazy-seq nil))
([x] (lazy-seq x))
([x y]
(lazy-seq
(let [s (seq x)]
(if s
(if (chunked-seq? s)
(chunk-cons (chunk-first s) (concat (chunk-rest s) y))
(cons (first s) (concat (rest s) y)))
y))))
([x y & zs]
(let [cat (fn cat [xys zs]
(lazy-seq
(let [xys (seq xys)]
(if xys
(if (chunked-seq? xys)
(chunk-cons (chunk-first xys)
(cat (chunk-rest xys) zs))
(cons (first xys) (cat (rest xys) zs)))
(when zs …
Run Code Online (Sandbox Code Playgroud)