如何正确缩进clojure/lisp?

Mos*_*erd 7 lisp primes code-formatting clojure indentation

我想缩进下面的一段代码.一个lisper如何缩进呢?我特别担心在哪里放新线.

(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)))))
Run Code Online (Sandbox Code Playgroud)

dno*_*len 5

(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)))))
Run Code Online (Sandbox Code Playgroud)

我是怎么做的.

  • 我会将"recur"的参数缩进到同一列. (7认同)