Browse code
feat: add default return value to applicable-when
Edward Langley authored on 15/07/2023 17:18:21
Showing 2 changed files
Showing 2 changed files
... | ... |
@@ -115,11 +115,16 @@ |
115 | 115 |
(<= (length it) |
116 | 116 |
len))) |
117 | 117 |
|
118 |
-(defun applicable-when (fun test) |
|
119 |
- (lambda (it) |
|
120 |
- (if (funcall test it) |
|
121 |
- (funcall fun it) |
|
122 |
- it))) |
|
118 |
+(defun applicable-when (fun test &optional (default nil default-p)) |
|
119 |
+ (if default-p |
|
120 |
+ (lambda (it) |
|
121 |
+ (if (funcall test it) |
|
122 |
+ (funcall fun it) |
|
123 |
+ default)) |
|
124 |
+ (lambda (it) |
|
125 |
+ (if (funcall test it) |
|
126 |
+ (funcall fun it) |
|
127 |
+ it)))) |
|
123 | 128 |
|
124 | 129 |
(defmacro conj (&rest fns) |
125 | 130 |
(let ((dat (gensym "dat"))) |
... | ... |
@@ -84,6 +84,9 @@ |
84 | 84 |
(5am:is (equal 1 |
85 | 85 |
(funcall (data-lens:applicable-when '1+ (constantly nil)) |
86 | 86 |
1))) |
87 |
+ (5am:is (equal "hi" |
|
88 |
+ (funcall (data-lens:applicable-when '1+ (constantly nil) "hi") |
|
89 |
+ 1))) |
|
87 | 90 |
(5am:is (equal 2 |
88 | 91 |
(funcall (data-lens:applicable-when '1+ (constantly t)) |
89 | 92 |
1)))) |