我正在学习Lisp,遇到问题,我有此代码
(defun createlist(list)
(if (characterp (car lst))
(list (car lst))))
> (print (createlist '(a v a (3))))
如何在不编写字符的情况下获得包含字符的列表
>(print (createlist '(#\a b 1)))
答案 0 :(得分:2)
这是编写字符文字的唯一方法。如果要同时检测a
和#\a
,则需要检查名称长度为一个字符的符号,例如
(let ((elt (car list)))
(if (or (characterp elt)
(and (symbolp elt)
(= (length (symbol-name elt)) 1)))
(list elt)))
答案 1 :(得分:-1)
(mapcar #'character (remove-if-not #'symbolp '(a b c 1 2)))
;; (#\A #\B #\C)
(mapcar #'list
(mapcar #'character
(remove-if-not #'symbolp
'(a b c 1 2 d))))
;; ((#\A) (#\B) (#\C) (#\D))