0
要获得SBCL所有有效编码列表,我这样做:SBCL:列出所有有效字符编码
(let (encoding-list)
(let (symbol-list)
(do-external-symbols (s :keyword)
(push s symbol-list))
(setf symbol-list (sort symbol-list #'string<))
(mapc (lambda (x)
(when (ignore-errors
(with-open-file
(phyle "scratch1"
:direction :output
:if-exists :supersede
:external-format x)
1)) ; <-- produce something non-NIL
(push x encoding-list)))
symbol-list))
(nreverse encoding-list))
是否有更简单的方法在SBCL做到这一点? (例如,在CLISP,所有的编码是在CHARSET包外部符号。)
你需要什么目的列表?如果你只是想看看哪些是可用的,那么该手册有一个[list](http://www.sbcl.org/manual/#External-Formats)。内部SBCL似乎有一个散列表“SB-IMPL :: * EXTERNAL-FORMATS *”,它包含所有外部格式。 – jkiiski
@jkiiski:我正在写一个LISP程序,以探索所有的格式,只是为了好玩。我的LISP程序无法阅读手册。你的建议奏效,并且(不奇怪)产生与手册中相同的格式;如果你把它变成真实的答案,我会很乐意接受它。我的kludgey方式产生相同的输出,除了它还包含“DEFAULT”。 –