可以使用宏来更改代码中括号所用的字符吗?例如可以 (
和)
替换为[
和]
?
最佳答案
另一个问题中有更多讨论(我认为这可能是重复的),How to define symbols that will work like ( and ) by symbol macro? ,但仍然值得展示这个特定的示例。查看该问题以了解其工作原理。
CL-USER> (set-macro-character #\[
(lambda (stream ignore)
(declare (ignore ignore))
(read-delimited-list #\] stream t)))
T
CL-USER> (set-macro-character #\] (get-macro-character #\)))
T
CL-USER> '[1 2 3]
(1 2 3)
CL-USER> [print 'hello]
HELLO
;=> HELLO
关于common-lisp - 是否可以使用宏更改括号的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007846/