Lisp-1과 Lisp-2의 차이점과 이것이 Clojure와 어떻게 관련되는지 이해하려고 노력했지만 여전히 제대로 이해하지 못합니다. 누구든지 나를 깨달을 수 있습니까?
답변
wikipedia 에 따르면 :
함수에 대한 별도의 네임 스페이스가 이점인지 여부는 Lisp 커뮤니티에서 경합의 원천입니다. 일반적으로 Lisp-1 대 Lisp-2 논쟁이라고합니다. Lisp-1은 Scheme의 모델을, Lisp-2는 Common Lisp의 모델을 나타냅니다.
기본적으로 변수와 함수가 충돌없이 동일한 이름을 가질 수 있는지 여부에 관한 것입니다. Clojure는 Lisp-1 로 함수와 변수에 동일한 이름을 동시에 사용할 수 없습니다.
답변
Richard Gabriel 이 작성한 이 문서 를 읽고 싶을 것 입니다. Lisp 커뮤니티가 Lisp1 대 Lisp2에서 논의한 문제를 요약 한 것입니다. 처음 몇 섹션에서는 약간 조밀하고 느리게 이동하지만 섹션 5를 지나면 읽기가 훨씬 쉽습니다.
기본적으로 Lisp1에는 기호를 값에 매핑하는 단일 환경이 있으며 이러한 값은 “일반”또는 함수일 수 있습니다. Lisp2에는 (적어도) 두 개의 네임 스페이스가 있습니다 (기호에는 함수 값에 대한 슬롯과 일반 값에 대한 슬롯이 하나씩 있음). 따라서 Lisp2에서는 foo라는 함수와 foo라는 값을 가질 수 있지만 Lisp1에서는 foo라는 이름이 단일 값 (함수 또는 기타) 만 참조 할 수 있습니다.
둘 사이에는 몇 가지 장단점과 맛의 차이가 있지만 자세한 내용은 논문을 읽으십시오. Christian Queinnec의 저서 “Lisp in Small Pieces”도 본문을 통해 짜여진 차이점에 대해 논의하고 있습니다.