ถาม:ทำไมเอลลิสจึงไม่มีเนมสเปซและเราจะหามาได้อย่างไร
Elisp ไม่มีเนมสเปซอื่นนอกจากโกลบอลซึ่งนำไปสู่การเขียนโค้ดของการเติมคำนำหน้าฟังก์ชันโกลบอลตัวแปรและค่าคงที่ทั้งหมดด้วยคำนำหน้าที่ไม่ซ้ำใคร
นอกเหนือจากปัจจัยความน่ารำคาญใจแล้วมันยังทำให้ฉันกลายเป็นประเด็นที่เดือดดาลจาก 1) จำนวนไลบรารีและแพ็คเกจที่ยิ่งใหญ่และ 2) การมีอยู่ของฟังก์ชันและตัวแปรดั้งเดิมที่ไม่เคารพต่อคำนำหน้าหรือ มีนิสัยแปลก ๆ พอสมควรว่าไม่มีตัวเลือกคำนำหน้าดี ๆ ที่พวกเขาสามารถใช้ได้ นอกจากนี้ยังหมายถึงความพยายามเป็นระยะ ๆ ในการหาเหตุผลเข้าข้างตนเองรหัสเก่า (เช่นเดียวกับการเปลี่ยนจากcl
เป็นcl-lib
) เป็นจำนวนงานที่ไม่สำคัญ (แม้ว่าฉันจะดีใจในการทำความสะอาด แต่ฉันก็ยังขาดน้ำตาทุกครั้งที่พิมพ์อะไรเช่นนี้cl-find
)
ฉันออกไปเดินเล่นรอบ ๆ เพื่อดูว่าฉันจะรู้ได้ไหมว่าทำไมเอลลิสยังคงไม่มีเนมสเปซหลังจากใช้งานไปหลายสิบปี แต่รู้สึกประหลาดใจเล็กน้อยที่การเก็บเกี่ยวเล็กน้อย หน้าวิกิพีเดียใน namespacesค่อนข้างสั้น Nic Ferrierมีการแก้ไขปัญหาอีกต่อไปเล็กน้อยและมีหัวข้อล่าสุดเกี่ยวกับemacs-develเกี่ยวกับเรื่องนี้เช่นกัน มีเธรดสแต็คโอเวอร์โฟลว์เก่าจากปี 2010 ที่กล่าวถึงความเป็นไปได้ในการใช้มาโครในการติดตั้งเนมสเปซ ตัวอย่างของวิธีการแมโครอื่นสามารถพบได้ที่นี่ มีการใช้งานอย่างน้อยสอง ( ที่นี่และที่นี่พร้อมคำอธิบายของหลังที่นี่) ออกไปที่นั่น แต่พวกเขาไม่ได้เห็นกิจกรรมมากนักเป็นเวลาสองปีและฉันไม่ได้ทำงานในห้องสมุดใด ๆ ที่ใช้พวกเขา
ฉันคิดว่าถ้าการเพิ่มเนมสเปซเป็นเรื่องง่าย ดังนั้น:
- อะไรคืออุปสรรคทางเทคนิคในการเพิ่มเนมสเปซลงใน elisp
- การเพิ่มเนมสเปซทำลายรหัสที่มีอยู่จำนวนมากหรือไม่
- ฟังก์ชั่นนี้เป็นบางสิ่งที่จำเป็นต้องเป็นออร์แกนิกเป็นเอลิค (เปลี่ยนล่ามเอง) หรือมันสามารถสร้างขึ้นมาจากด้านบนผ่านมาโครได้หรือไม่?