8

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 中是否有重构功能可以提供帮助?我没有找到。

4

2 回答 2

6

学习图书馆。例如,看起来您可以使用if-letor seq。如果您不考虑使用静态分析工具“作弊”,请查看Kibit

于 2012-09-15T20:47:29.590 回答
5

clojure-refactoring显然可以提供帮助。

于 2012-09-27T19:55:58.723 回答