首页 > 解决方案 > 如何将 gensym 传递给 common lisp 中的函数名

问题描述

我正在使用 Lucerne 构建一个 api,并尝试根据列表生成这些 api(它们是非常简单的端点)。问题是 lucerne 使用的视图只是函数,所以如果我(gensym)在运行时传递给宏,则该视图函数的名称只是设置为(gensym)(或者失败,不记得是哪个)。

我想在一个宏中动态命名一组这些视图函数,该宏将处于某种循环中,每次运行宏扩展的代码时,函数都有一个新名称(所以如果我只使用标准gensym每次运行宏时,每个函数将始终具有相同的名称,并相互覆盖)。有没有办法做到这一点?

标签: functionmacroscommon-lisp

解决方案


您可能希望使用intern创建“公共”符号(用户将通过名称调用)和make-symbol“私有”符号(存储在某处)。


推荐阅读