大概是你讲的那部分没有提供相应资料所以让人有点将信将疑的感觉?
因为是结合 Common Lisp 的经验自己总结的……实际上没有太多 Emacs Lisp 专门的资料可以引用。只看 eq
intern
的说明其实是看不出什么的。
https://whispering-beach-14031.herokuapp.com/eq
只说了测试两个物件是否是同一个物件。
eq
是比较指针的说法是这里来的
(Implementationally, x and y are usually eq if and only if they address the same identical memory location.) Implementation note: eq simply compares the two given pointers, so …
https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node74.html
其实用指针这个说法也只是为了理解方便,Lisp 和 Java 一样,严格来说都是没有指针的,只有引用,只不过引用可以通过指针实现,也可以像 Emacs Lisp 一样用 obarray 实现,只是要解释 obarray 是什么又要赘述一番,于是就留个链接让有兴趣“了解真相”的同学自己看原理了。
intern
的意义也是反向结合 Emacs Lisp 的实现以及 call by reference 的前提理解出来的。所以会说是参考了实现的文档。
1 个赞