diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2021-05-03 15:44:37 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2021-05-06 12:23:51 -0700 |
commit | c2430567f4982fa55b53341cd2d7552671935a5c (patch) | |
tree | 551eeae620941a60b8af06628798f9498c9ee048 /src/propspec.lisp | |
parent | 69bb8712cfb2f13cfca50efbded62624a0a6dcdf (diff) | |
download | consfigurator-c2430567f4982fa55b53341cd2d7552671935a5c.tar.gz |
add & use PROPAPP macro
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/propspec.lisp')
-rw-r--r-- | src/propspec.lisp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/propspec.lisp b/src/propspec.lisp index 16df661..525429b 100644 --- a/src/propspec.lisp +++ b/src/propspec.lisp @@ -243,15 +243,18 @@ unevaluated propspec are defined before that unevaluated propspec is processed." (cell-error-name condition))))) -(defmacro props (combinator &rest forms) - "Apply variadic COMBINATOR to FORMS and convert from an unevaluated property -application specification expression to a property application specification -expression." +(defmacro propapp (form) + "Convert a single element of an unevaluated property application specification +expression to a property application specification expression." (flet ((evaluate (propapp) `(list ',(car propapp) ,@(cdr propapp)))) - (handler-case - (map-propspec-propapps #'evaluate (cons combinator forms) t) + (handler-case (map-propspec-propapps #'evaluate form t) (ambiguous-propspec (c) ;; resignal with a more specific error message - (error 'ambiguous-unevaluated-propspec - :name (cell-error-name c)))))) + (error 'ambiguous-unevaluated-propspec :name (cell-error-name c)))))) + +(defmacro props (combinator &rest forms) + "Apply variadic COMBINATOR to FORMS and convert from an unevaluated property +application specification expression to a property application specification +expression." + `(propapp ,(cons combinator forms))) |