2012-09-15 21 views
8

Haciendo 4clojure ejercicios, uno de los objetivos es proporcionar una respuesta correcta y un objetivo opcional es proporcionar la solución más corta posible (no se cuentan los espacios), a.k. un código de golf. A continuación, puede comparar con las otras soluciones.¿Cómo puedo refactorizar el código fuente de Clojure?

Al hacer un ejercicio I primero encuentra una respuesta correcta. Luego aplico un manual refactorizando a mi código fuente, que consiste en cambiar el nombre de las variables a un solo carácter. Por ejemplo, después de aplicar este paso básico, mi código puede verse así.

(fn f[s] 
    (if (empty? s) 
    {} 
    (let [[k & r] s 
     [v n] (split-with number? r)] 
     (assoc (f n) k v)))) 

bastante ilegible para un ser humano, pero obtienen mejores resultados en 4Clojure concurso de código de campo, ya que ahorra una gran cantidad de caracteres.

En aras de la curiosidad, ¿qué harías en emacs para automatizar eso? ¿Hay funciones de refactorización en clojure.core que podrían ayudar? No encontré ninguno.

Respuesta

6

Conozca las bibliotecas. Por ejemplo, parece que podría usar if-let o seq. Si no considera el uso de una herramienta de análisis estático "trampa", consulte Kibit

+0

Yeh thnx para if-let o seq, los conozco. En realidad, el código extraído aquí es solo para fines ilustrativos. Gracias por el enlace a Kibit. En realidad estoy investigando su código fuente y descubriendo nuevas funciones que no sabía: caminar y caminar. Desde el documento, realmente huele como si fuera lo que estaba buscando. Gracias :-) –

Cuestiones relacionadas