2011-03-30 8 views
15

나는 몇 가지 상호 관련 기능을 가지고 있으며, 파일에서 자연스럽게 그들을 어떻게 배치 할 것인가는 그들의 의존성과 상충된다. 함수 2 위에 있지만 함수 1 위에 있음). 코드를 작성할 때 일반적으로 최상위 표현식을 계속 평가하고 전체 파일을 평가하여 조회 등의 종속성을 새로 고칩니다. 나는 그것을 매우 자주 발견하고 있으며, 나는 의존성 갈등으로 끝나고, 많은 함수를 둘러싼 다.clojure에서 "hoisting"이 부족함을 느낀다

다른 언어에서 나는 함수를 선언하자마자 다른 것보다 먼저 등장하는 것처럼 장면 뒤에서 "끌어 올렸습니다."라고 알고 있습니다. 그렇게하면 코드에서 물건의 순서에 대해 걱정할 필요가 없으며 함수를 모듈화 된 코드 비트로 취급 할 수 있습니다. 나를 잊어 버리지 않는 것이이 기능의 부족입니다. 내가 뭔가 잘못하고 있는거야? 그 작은 사소한 성가심 다음 엄청난 거래, 당신이 일종의 관심을 지불하는 데 익숙해 뭔가인가?

답변

22

declare

(declare fun1 fun2 fun3) 

(defn fun3 [] (fun1)) 
(defn fun1 [] (fun2)) 
(defn fun2 [] 42) 
+0

달콤한 네임 스페이스, 감사의 시작에 선언 문을 추가하여 기능 순서를 저글링 피할 수 잘

declare macro Usage: (declare & names) defs the supplied var names with no bindings, useful for making forward declarations. Added in Clojure version 1.0 

이 문제를 해결합니다! 정확히 내가 무엇을 찾고 있었는지 –

+0

아직 조금 심한데, 고마워! –

관련 문제