git.fiddlerwoaroof.com
Browse code

Add "may"

Ed Langley authored on 17/09/2018 09:04:45
Showing 2 changed files
... ...
@@ -198,6 +198,24 @@
198 198
 (defun %default-pair-transform (k v)
199 199
   (cons (alexandria:make-keyword (string-upcase k)) v))
200 200
 
201
+(defun find-nonoperator-symbols (form)
202
+  (alexandria:flatten
203
+   (remove-duplicates
204
+    (typecase form
205
+      (symbol (list form))
206
+      (cons (append
207
+             (when (consp (car form))
208
+               (find-nonoperator-symbols (car form)))
209
+             (typecase (cdr form)
210
+               (symbol (list (cdr form)))
211
+               (cons (loop for thing in (cdr form)
212
+                        append (find-nonoperator-symbols thing))))))))))
213
+
214
+(defmacro may ((op arg))
215
+  (alexandria:once-only (arg)
216
+    `(when ,arg
217
+       (,op ,arg))))
218
+
201 219
 (defmacro default-when (default test &body body)
202 220
   "return the default unless the test is true"
203 221
   (warn "default-when is deprecated, renamed to default-unless")
... ...
@@ -31,7 +31,8 @@
31 31
            #:skip-values #:limit-values #:substitute-values #:op #:pick/r
32 32
            #:pick-error #:twice #:glambda
33 33
            #:default-unless
34
-           #:transform-first-value)) 
34
+           #:transform-first-value
35
+           #:may)) 
35 36
 
36 37
 (defpackage :fwoar.lisputils.shortcuts
37 38
   (:use :cl :fwoar.lisputils)