Jim*_*ies 8 lisp readability clojure code-readability
我是clojure的新手,我正在努力解决的主要问题是编写可读代码.我经常最终得到如下所示的功能.
(fn rep
([lst n]
(rep (rest lst)
n
(take n
(repeat (first lst)))))
([lst n out]
(if
(empty? lst)
out
(rep
(rest lst) n
(concat out (take n
(repeat
(first lst))))))))
Run Code Online (Sandbox Code Playgroud)
有很多端括号的构建.有哪些方法可以减少这种情况或将其格式化,以便更容易找到丢失的括号?
Joo*_*aat 15
使用Emacs的paredit模式(在其他几个编辑器中也模仿)意味着你通常 - 除非你使用鼠标/强制非结构化选择进行复制/粘贴 - 处理匹配的括号/大括号/括号和相关的缩进而不需要计数.
Emacs与https://github.com/technomancy/emacs-starter-kit(强烈推荐!)默认情况下为clojure启用了paredit.否则,请参阅 http://emacswiki.org/emacs/ParEdit
Raf*_*ird 13
除了拥有支持大括号匹配的编辑器之外,您还可以尝试使代码更少嵌套.我相信你的功能可以改写为:
(defn rep [coll n] (mapcat (partial repeat n) coll))
Run Code Online (Sandbox Code Playgroud)
当然,这更多的是艺术(工艺)而不是科学,但有些指针(按随机顺序):
chouser->和->>线程宏对于展平嵌套代码非常有用