什么时候该使用格式化工具?

编程语言 2026-07-09

我对所谓的格式化编译器有点了解,看看了 the formatter 宏。

我也看到了 the discussion here,我认为我大致理解了理论。

然而,实践有点模糊。

更确切地说,我确实知道如何使用它,但不确定是否值得,以及在何时使用,尤其是在SBCL平台上。

在我查看过的项目中,没有人使用它。

有没有人能指向一些现实代码中非常好的例子,看看它在哪些地方会产生差异?

我已经为一个在SBCL上实现的Lisp方言实现了一个format函数,现在在考虑是否也值得实现formatter。

我有点犹豫,因为我并不经常看到它被使用,坦率地说,到目前为止还没有看到它在实际项目中的使用,更多是在示例中。

我想看到一些使用它来优化打印或字符串处理的项目。

我希望这个问题对SX来说不过于宽泛。

解决方案

你可以把它用作映射函数的函数参数:

(let ((formatted-results 
        (mapcar (formatter "<~S>") '#1=(nil . #1#) results))))
  ...
)

更一般地,当你预计会重复使用同一个格式字符串时,可以避免每次调用 FORMAT 时都解析格式字符串。在实践中这可能并不显著,因为实现可能会在内部缓存解析结果,避免这部分开销。

然而,由于 FORMATTER 是一个宏,这使得当它是字面量时,解析可以在编译时完成,因此根本不存在运行时开销。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章