2009-12-15 3 views
3

http://pastebin.com/d2294a374이 Clojure 코드가 제대로 들여 쓰기 되었습니까?

나는 2 가지 다른 방식으로 들여 쓰기 된 코드를 게시했습니다. 함수에 인수가 여러 개있을 때 어떻게해야할지 모르므로 여기서 혼란스러워합니다. 각 인수가 다른 줄에 있어야합니까? 우리가 (DEF XYZ (FN abc 방송과 같이있을 때 또한, [A1 A2] (FN abc 방송은 ... 나는 http://mumble.net/~campbell/scheme/style.txt에서 다음을 읽고있다? 다른 라인에

을 이동하지만, 그렇지 않습니다 않습니다 저 훨씬 의미가 같다.

** 들여 정렬

개구 둥근 괄호 다음 제 폼 즉, 어떤 형태의 운영자는, 상기 나머지 형태 압입 또는 정렬 규칙을 결정 이 위치의 많은 이름은 특수한 정렬 또는 들여 쓰기 규칙을 나타냅니다. 특수 연산자, 매크로 또는 특정 매개 변수 구조가있는 프로 시저입니다. 제 폼이 아닌 특별한 이름 인 경우 제 폼이 동일 선상에있는 경우

그러나, 그 후, 두번째 하위의 모든 다음 하위 폼의 개시 열을 정렬. 두 번째 하위 양식이 다음 줄에 있으면 그 시작 열을 첫 번째 하위 양식의 시작 열과 정렬하고 나머지 모든 하위 양식에 대해서도 동일하게 수행하십시오.

일반적으로 Emacs는 Lisp 코드를 올바르게 들여 쓰기합니다. 모든 코드에서`C-M-q '를 실행하면 코드가 올바르게 들여 쓰기가되고, 은 Emacs를 구성하여 비표준 양식이 적절하게 들여 쓰여 지도록 으로 적절하게 들여 쓰기합니다.

수없는 :

(+ (sqrt -1) 
    (* x y) 
    (+ p q)) 

(+ 
    (sqrt -1) 
    (* x y) 
    (+ p q)) 

허용 :

(+ (sqrt -1) 
    (* x y) 
    (+ p q)) 

(+ 
(sqrt -1) 
(* x y) 
(+ p q)) 

근거 : 주상 정렬 리더 단순히 일치 하향 또는 상향 를 스캔하여, 노골적 어떤 동작 피연산자를 수행 할 수 있도록 공통 열. 들여 쓰기는 구조를 나타냅니다. 혼란스런 들여 쓰기는 수동으로 괄호를 매칭하지 않고 구조를 파생하고자하는 독자에게는 의 부담입니다.

+0

나머지는 같은 들여 쓰기를해야한다. –

답변

10

인수가 여러 줄에있는 경우 (예 : 한 줄에 들어 가지 않기 때문에) 모두 들여 쓰기가 동일해야합니다. 새 행의 첫 번째 인수를 넣어 경우, 해당 들여 쓰기 기능 자체보다 하나 더 깊은 (예 : 2 개 공간)이어야한다 :

당신이 함수로 같은 줄에 첫 번째 인수를 넣으면
(foo (bar (baz 
      arg1 
      arg2))) 

, 다음과 같이

(foo (bar (baz arg1 
       arg2))) 

내가 당신의 예를 들여 것 : :이 페이스트 빈 사망

(defn get-neighbors [[x y] v] 
    (for [y1 (range (dec y) (+ y 2)) 
     x1 (range (dec x) (+ x 2)) 
     :when (and (not (and (= x1 x) 
          (= y1 y))) 
        (in-bounds? x1 y1 v))] 
    ((v y1) x1)))