在做4clojure练习时,一个目标是提供正确的答案,另一个可选目标是尽可能提供最短的解决方案(空格不计入其中),即所谓的代码高尔夫。然后,您可以将其与其他解决方案进行比较。
在做练习时,我首先找到正确的答案。然后,我对我的源代码应用手动重构,这包括将变量名重命名为单个字符。例如,在应用此基本步骤之后,我的代码可能如下所示。
(fn f[s]
(if (empty? s)
{}
(let [[k & r] s
[v n] (split-with number? r)]
(assoc (f n) k v))))
虽然这段代码对于人来说几乎无法阅读,但它在4Clojure代码高尔夫比赛中表现得更好,因为它可以节省很多字符。
出于好奇,你会如何在emacs中自动化这个过程? 是否有clojure.core中的重构函数可以帮助? 我没有找到任何相关函数。