다소 유사하다. 그래서 Clojure의이 볼 때 :로 리더 "번역"입니다
('A 'B 'C)
:
((quote A) (quote B) (quote C))
그 인용 형태의 각각은, 기호로 평가 그래서 (quote A)
는 A.에서라는 기호로 평가 Clojure, 심볼은 함수이며 적용 할 수 있으므로 ((quote A) (quote B) (quote C))
은 실제로 함수 호출입니다. (예 : ('mysym my-hash-map : map)')이 예제에서는 두 번째 인수 (기본값)를 사용하여 하나의 인수 (map)의 invoke()에 대해 IFn을 구현합니다. none)은 get my-hash-map 'mysym : none'과 같은 의미입니다.
그래서 무슨 일이 발생합니까? C
이 기본값이므로 그 이유가 반환됩니다. 한편
이
'('A 'B 'C)
세 개의 요소의 목록은 각각의 구성 요소, 심볼 quote
및 목록 실제로
(quote ((quote A) (quote B) (quote C)))
에 리더에 의해 번역 다른 기호 (이 경우 A
, B
, C
).
따라서 (last '('A 'B 'C))
은 실제로 (quote C)
입니다. 그 두 결과의 차이점은 C
은 C라는 기호이며 (quote C)
은 두 요소의 목록입니다.
이 작업을 확인할 수 있습니다
user=> (class ('A 'B 'C))
clojure.lang.Symbol
user=> (class (last '('A 'B 'C)))
clojure.lang.PersistentList
user=>
희망을 분명 그!
"Quoting Confujon"을 원하셨습니까? – pablosaraiva