如何正确缩进clojure / lisp?

| 我要缩进以下代码。 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)))))
    
已邀请:
        
(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)))))
我会怎么做。     
        除了@dnolen的答案外,我通常还会在 新功能(如您的前两行) 缩进函数的长参数或重要参数(例如
cond
块) 从逻辑上讲,每行应少于80个字符,并将较长的想法分解为较小的块 最重要的是要保持一致! 然后,只需对齐并缩进行,以便标识针对相同的代码深度。     

要回复问题请先登录注册