|
Revision 3201, 0.7 kB
(checked in by hans, 8 months ago)
|
add missing files
|
| Line | |
|---|
| 1 |
(in-package :alexandria) |
|---|
| 2 |
|
|---|
| 3 |
(defun featurep (feature-expression) |
|---|
| 4 |
"Returns T if the argument matches the state of the *FEATURES* |
|---|
| 5 |
list and NIL if it does not. FEATURE-EXPRESSION can be any atom |
|---|
| 6 |
or list acceptable to the reader macros #+ and #-." |
|---|
| 7 |
(etypecase feature-expression |
|---|
| 8 |
(symbol (not (null (member feature-expression *features*)))) |
|---|
| 9 |
(cons (check-type (first feature-expression) symbol) |
|---|
| 10 |
(eswitch ((first feature-expression) :test 'string=) |
|---|
| 11 |
(:and (every #'featurep (rest feature-expression))) |
|---|
| 12 |
(:or (some #'featurep (rest feature-expression))) |
|---|
| 13 |
(:not (assert (= 2 (length feature-expression))) |
|---|
| 14 |
(not (featurep (second feature-expression)))))))) |
|---|