一千萬個為什麽

搜索

提供`with-gensyms'經典宏的Emacs Lisp庫的名稱

我覺得Emacs Lisp宏的編寫方式與Common Lisp宏不同。這不可能是真的,但所有 gensym 的東西在哪裏?最近我寫了一個宏,我需要避免捕獲一個詞法變量,所以我開始搜索 gensym 函數。沒有這樣的功能!具有宏的Lisp如何不具有 gensym ?也許它在Emacs Lisp中的處理方式不同?

我在 cl-lib 中找到了 gensym ,這已經是了。但我真正需要的是 with-gensyms 。你知道我在哪裏可以找到這樣一個宏(如果它在ELPA或MELPA中,第三方包很好,雖然它現在應該在Emacs中構建,我想)。

我已經準備好自己寫這八行了,但是這種事情不應該每次都重寫,恕我直言。


Edit: to make it clear: I'm searching for a way to get this once and for all, that's a library that contains it that I can depend upon. If you think it's OK to rewrite it everywhere every time developer needs it -- that's your point of view. If you vote to close the question simply because there is no such library and

Lisp黑客通常會為他們做一些實用的事情,例如編寫一個小的實用程序宏並將其留在那裏

- 我認為你的推理是錯誤的。 Lisp黑客通常不喜歡重做某些東西只是因為這就是人們如何做到這一點。他們創造了他們需要的東西,然後到處使用它。

有許多不同的庫可以讓生活更輕松,而且他們經常會做更多瑣碎的事情。然而,當我要求一些有用但卻缺失的東西時,我得到了這個典型的答案“好吧,你知道嗎,只是從Goggle復制粘貼,因為它不存在”。

你當然可以關閉這個問題,但恕我直言,這是一個正常的問題,要求Emacs Lisp開發人員在某些情況下可能會發現有用的某些工具。如果你不知道正確的解決方案,那並不意味著這個問題很糟糕。

最佳答案

請查看缺少宏工具。它可以在MELPA上找到。

該軟件包提供以下經典:

  • <�代碼> MMT-gensym </代碼>
  • <�代碼> MMT-化妝gensym列表</代碼>
  • <�代碼> MMT與 - 與gensyms </代碼>
  • <�代碼> MMT與 - 唯一名</代碼>
  • <�代碼> MMT-僅一次</代碼>

轉載註明原文: 提供`with-gensyms'經典宏的Emacs Lisp庫的名稱