2010-07-31 6 views
5

클로저 (str 적용) 질문이 있으십니까? 폐쇄와

(apply str [\a \b]) 

(apply str '(\a \b)) 

반환 "AB".

(apply str (\a \b)) 

오류를 반환합니다.

왜 그럴까요?

+0

나는 Clojure를 모른다. 그러나 그것은 가능하다. []는 목록이지만()은 다른 것입니까? – jtbandes

+1

@jtbandes : []는 벡터입니다 (성장하는 배열과 같음).()는리스트이지만 따옴표로 묶지 않으면 함수로 평가됩니다. 그 코드는 Lisps 주변의 데이터입니다. – nickik

답변

14

(\a \b)은 "\b 인수를 사용하여 \a 함수를 호출"하고, \a 문자는 함수가 아니기 때문에 실패합니다. 다음의 차이 참고 : 문자 그대로의 순서를 쓰기 견적도 목록 내부 부품의 평가를 정지하기 때문에 대신 인용 목록의 벡터를 사용하려는 경우, 일반적으로

 
user=> (+ 1 2 3) 
6 
user=> '(+ 1 2 3) 
(+ 1 2 3) 

을, 예 :

 
user=> [(+ 1 2) (+ 3 4)] 
[3 7] 
user=> '((+ 1 2) (+ 3 4)) 
((+ 1 2) (+ 3 4)) 
관련 문제