Aquí es un poco de código de ejemplo:¿Cómo se sabe cuándo volver a introducirse en Clojure/Lisp en general?
(deftype Deck52 [suits] :as this
DeckOfCards
(check-empty []
(Deck52. (apply hash-map
(apply concat (remove (-> nil?)
(for [[key val] suits]
(if (empty? val) nil [key val])))))))
(remove-card [suit card]
(assoc suits suit (remove #(= card %) (suit suits))))
(get-card [suit]
(let [suitd (suit suits)]
[(first suitd) (check-empty (Deck52. (assoc suits suit (rest suitd))))]))
(random-card []
(let [suitn (+ 1 (rand-int 4))]
(cond (= suitn 1) (get-card this :hearts)
(= suitn 2) (get-card this :diamonds)
(= suitn 3) (get-card this :clubs)
(= suitn 4) (get-card this :spades)))))
También he publicado este código en un Gist aquí si es más fácil de leer: http://gist.github.com/307425 (no ir a ninguna parte).
El primer ejemplo aquí es check-empty
. Tuve gran dificultad para saber dónde debería y no debo presionar regresar, y todavía no sé si lo hice bien. Amenaza con salir directamente del lado derecho de la pantalla, pero esa es la forma en que el modo clojure modela, y supongo que se supone que es así.
Entonces, la pregunta es, ¿cuándo es hora de colocar una nueva línea en el código Clojure/Lisp? ¿Estoy 'haciendo' rito '?
NOTA: No puedo prometer que el código que publiqué funciona. He estado haciendo algunos experimentos, y algunas cosas pueden ser muy sucky, si no roto.
Su código tiene pestañas incrustadas, razón por la cual el formateo se dañó en el bloque de código. Lo he arreglado –
¿Cómo diablos pasó eso? O_o – Rayne