2012-09-15 15 views
8

Eseguendo gli esercizi 4clojure, un obiettivo è fornire una risposta corretta e un obiettivo facoltativo è fornire la soluzione più corta possibile (gli spazi non vengono contati in), a.k.a code golf. È quindi possibile confrontare con le altre soluzioni.Come posso refactoring codice sorgente Clojure?

Quando si esegue un esercizio I primo trovare una risposta corretta. Quindi applico un manuale refactoring al mio codice sorgente, che consiste nel ridenominare i nomi delle variabili in un singolo carattere. Ad esempio, dopo aver applicato questo passaggio base, il mio codice potrebbe apparire come questo.

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

Piuttosto illeggibile per un essere umano, ma migliore punteggio nel concorso 4Clojure codice di golf in quanto consente di risparmiare un sacco di personaggi.

Per motivi di curiosità, come faresti in emacs per automatizzarlo? Ci sono funzioni di refactoring in clojure.core che potrebbero aiutare? Non ho trovato nessuno.

risposta

6

Imparate le librerie. Ad esempio, sembra che potresti utilizzare if-let o seq. Se non si considera l'uso di uno strumento di analisi statica "barare", controllare

+0

Yeh thnx per if-let o seq, li conosco. In realtà il codice estratto qui è solo a scopo illustrativo. Grazie per il link a Kibit. In realtà sto osservando il suo codice sorgente e scoprendo nuove funzioni che non conoscevo: walk and prewalk. Dal doc ha davvero l'odore di quello che stavo cercando. Grazie :-) –

Problemi correlati