2012-02-01 4 views
7

Clojureでcondステートメント内に大きな句をフォーマットする推奨方法は何ですか?condで大きな句を指定する

例:

(cond 
(> (large-function large-arg1 
        large-arg2 
        large-arg3) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 
(> (large-function large-arg4 
        large-arg5 
        large-arg6) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 
(> (large-function large-arg7 
        large-arg8 
        large-arg9) 
    long-var-name)) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +))) 

結果が条件と同じ行にある場合は、結果はあまりにもインデント終わるが、その結果、条件が異なる行がある場合、それは失うには余りにも容易になります条件のトラック対結果。これはCommon Lispスタイルのcondが便利なようですが、Clojureの場合はかっこを追加すると推奨コースとは思われません。

答えて

7

多くの場合、このデフォルトの質問は「emacsのやりかたと同じようにフォーマットする」ような質問です。私は本質的にこの哲学を支持しているわけではありません。それはultimatly私が好きな短いcondsにおける美学

のあなたの感覚次第です:

(cond 
    (clause1) (action) 
    (clause2) (action) 

私は視覚的な区切り文字としていくつかの余分な改行を追加したいとあなたのような本当に長いもののために:

(cond 
    (clause) 
    (action) 

    (clause2) 
    (action2) 

だからあなたのコードをフォーマットする:

(cond 
(> (large-function large-arg1 
        large-arg2 
        large-arg3) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 

(> (large-function large-arg4 
        large-arg5 
        large-arg6) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +)) 

(> (large-function large-arg7 
        large-arg8 
        large-arg9) 
    long-var-name) 
(->> (iterate #(* % 6) 1) 
     (take 10) 
     (apply +))) 
関連する問題