Как правильно сделать отступ для clojure / lisp? - PullRequest
7 голосов
/ 14 июня 2011

Я хочу сделать отступ для следующего фрагмента кода. Как бы это сделать? Я особенно озадачен тем, куда ставить переводы строк.

(defn primes [n]
  (letfn [(sieve [table removal]
                 (assoc table removal false))
          (primebools [i table]
                       (cond 
                         (= i n) table 
                         (table i) (recur (inc i) 
                                          (reduce sieve 
                                                  table 
                                                  (range (* i i) n i))) 
                         :else (recur (inc i) 
                                      table)))]
    (let [prime? (primebools 2 (apply vector (repeat n true)))]
      (filter prime? (range 2 n)))))

Ответы [ 2 ]

5 голосов
/ 14 июня 2011
(defn primes [n]
  (letfn [(sieve [table removal]
            (assoc table removal false))
          (primebools [i table]
            (cond 
              (= i n) table 
              (table i) (recur (inc i) 
                          (reduce sieve table 
                            (range (* i i) n i))) 
              :else (recur (inc i) table)))]
    (let [prime? (primebools 2 (apply vector (repeat n true)))]
      (filter prime? (range 2 n)))))

Вот как бы я это сделал.

1 голос
/ 14 июня 2011

В дополнение к ответу @ dnolen я обычно ставлю новую строку, когда есть

  1. новая функция (как ваши первые две строки)
  2. для отступа длинного или важного аргумента функции (например, блока cond)
  3. логически оставьте в каждой строке не более 80 символов и разбейте длинные идеи на более мелкие куски
  4. самое главное, будьте последовательны!

Затем просто выровняйте и сделайте отступы строк, чтобы идентификаторы соответствовали глубине кода.

...