Q : 네임 스페이스가없는 이유는 무엇이며 어떻게 얻을 수 있습니까?
Elisp에는 전역 네임 스페이스 이외의 네임 스페이스가 없으므로 모든 전역 함수, 변수 및 상수 앞에 고유 한 접두사를 붙이는 코딩 규칙이 생겼습니다.
성가신 요소를 제외하고는 1) 계속해서 늘어나는 훌륭한 라이브러리와 패키지, 2) 접두사 규칙을 따르지 않는 기존 함수 및 변수의 지속적인 존재 또는 그들이 사용할 수있는 좋은 접두사 옵션이 실제로는 충분하지 않습니다. 이는 주기적 시도 (의 전이와 마찬가지로 이전 코드를 합리화 것이 수단 cl
으로는 cl-lib
) 일이 적지 않은 양이다. (정리가 기쁘지만,을 입력 할 때마다 눈물을 흘 렸습니다 cl-find
.)
elisp에 왜 수십 년 동안 사용 된 후에도 네임 스페이스가 없는지 알 수 있었지만 적당한 수확에 약간 놀랐습니다. 네임 스페이스 의 위키 페이지 는 매우 짧습니다. Nic Ferrier 는이 문제를 약간 더 오랫동안 처리했으며 emacs-devel에도 상당히 최근의 스레드가 있습니다. 매크로를 사용하여 네임 스페이스를 구현할 수있는 가능성을 논의하는 2010 년 의 오래된 Stack Overflow 스레드가 있습니다. 매크로 접근의 다른 예는 여기 에서 찾을 수 있습니다 . 적어도 몇 가지 구현이 있습니다 ( here 및 here , 후자의 설명이 여기에 있음)), 그러나 그들은 몇 년 동안 많은 활동을 보지 못했으며, 나는 그것을 사용하는 라이브러리를 뛰어 넘지 않았습니다.
네임 스페이스를 쉽게 추가 할 수 있다면 이미 완료된 것으로 가정합니다. 그래서:
- 제거 할 네임 스페이스를 추가하는 데 기술적 장벽은 무엇입니까?
- 네임 스페이스를 추가하면 기존 코드가 많이 손상됩니까?
- 이 기능이 유기적으로 적용되어야합니까 (인터프리터 자체로 변경) 매크로를 통해 실제로 구현 될 수 있습니까?