什么时候该使用格式化工具?
我对所谓的格式化编译器有点了解,看看了 the formatter 宏。
我也看到了 the discussion here,我认为我大致理解了理论。
然而,实践有点模糊。
更确切地说,我确实知道如何使用它,但不确定是否值得,以及在何时使用,尤其是在SBCL平台上。
在我查看过的项目中,没有人使用它。
有没有人能指向一些现实代码中非常好的例子,看看它在哪些地方会产生差异?
我已经为一个在SBCL上实现的Lisp方言实现了一个format函数,现在在考虑是否也值得实现formatter。
我有点犹豫,因为我并不经常看到它被使用,坦率地说,到目前为止还没有看到它在实际项目中的使用,更多是在示例中。
我想看到一些使用它来优化打印或字符串处理的项目。
我希望这个问题对SX来说不过于宽泛。
解决方案
你可以把它用作映射函数的函数参数:
(let ((formatted-results
(mapcar (formatter "<~S>") '#1=(nil . #1#) results))))
...
)
更一般地,当你预计会重复使用同一个格式字符串时,可以避免每次调用 FORMAT 时都解析格式字符串。在实践中这可能并不显著,因为实现可能会在内部缓存解析结果,避免这部分开销。
然而,由于 FORMATTER 是一个宏,这使得当它是字面量时,解析可以在编译时完成,因此根本不存在运行时开销。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。