Pour obtenir la liste de tous les encodages valides pour sbcl, je fais ceci:sbcl: liste tous les encodages de caractères valides
(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))
est-il un moyen plus facile de le faire dans sbcl? (Par exemple, dans clisp, tous les codages sont des symboles externes dans le package CHARSET.)
Dans quel but avez-vous besoin de la liste? Le manuel a une [liste] (http://www.sbcl.org/manual/#External-Formats) si vous voulez juste voir lesquels sont disponibles. En interne SBCL semble avoir une table de hachage 'SB-IMPL :: * EXTERNAL-FORMATS *', qui contient tous les formats externes. – jkiiski
@jkiiski: J'écris un programme LISP pour explorer tous les formats, juste pour m'amuser. Mon programme LISP ne peut pas lire le manuel. Votre suggestion a fonctionné, et (sans surprise) produit les mêmes formats que dans le manuel; Si vous en faites une réponse réelle, je serais heureux de l'accepter. Mon chemin de kludgey produit la même sortie sauf qu'il inclut aussi "DEFAULT". –