(error "Symbol `~A' not external in package `~A'"
name (package-name package)))))))))
-(let ((truish '("true" "t" "yes" "on" "verily"))
- (falsish '("false" "nil" "no" "off" "nowise")))
+(let ((truth-map (make-hash-table :test #'equalp)))
+ (dolist (string '("true" "t" "yes" "on" "yup" "verily"))
+ (setf (gethash string truth-map) t))
+ (dolist (string '("false" "nil" "no" "off" "nope" "nowise"))
+ (setf (gethash string truth-map) nil))
(defun truishp (string)
"Convert STRING to a boolean."
- (cond ((member string truish :test #'string-equal) t)
- ((member string falsish :test #'string-equal) nil)
- (t (error "Unrecognized boolean value `~A'" string)))))
+ (multiple-value-bind (val foundp) (gethash string truth-map)
+ (if foundp val
+ (error "Unrecognized boolean value `~A'" string)))))
;;;--------------------------------------------------------------------------
;;; Property representation.