aboutsummaryrefslogtreecommitdiff
path: root/lambda-tools.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-tools.lisp')
-rw-r--r--lambda-tools.lisp39
1 files changed, 2 insertions, 37 deletions
diff --git a/lambda-tools.lisp b/lambda-tools.lisp
index 24e3cb2..63f5c4d 100644
--- a/lambda-tools.lisp
+++ b/lambda-tools.lisp
@@ -2,43 +2,6 @@
(in-package #:lambda-tools)
-(defun $or (&rest predicates)
- "Each argument in PREDICATES is a predicate function of one
-argument. Returns a new predicate, call it P, that is the
-disjunction of each of the PREDICATES.
-
-The value of (P X) is the value of the first predicate Q in PREDICATES
-such that (Q X) is non-NIL, or is NIL if none of the PREDICATES return
-non-NIL.
-
-That is, the disjuction of PREDICATES is short-circuiting. If any
-PREDICATES have side effects, they will be executed only if each of
-the preceding predicates in the list returned NIL."
- (labels ((disj (x preds)
- (if (null preds) nil
- (or (funcall (car preds) x)
- (disj x (cdr preds))))))
- (lambda (x) (disj x predicates))))
-
-(defun $and (&rest predicates)
- "Each argument in PREDICATES is a predicate function of one
-argument. Returns a new predicate of one argument, call it P, that is
-the conjunction of each of the PREDICATES.
-
-The value of (P X) is NIL if any of the PREDICATES applied to X are
-NIL. Otherwise it is the value of the last member in PREDICATES
-applied to X.
-
-That is, the conjunction of PREDICATES is short-circuiting. If any
-PREDICATES have side effects, they will be executed only if each of
-the preceding predicates in the list returned non-NIL."
- (labels ((conj (x preds)
- (cond ((null preds) t)
- ((null (cdr preds)) (funcall (car preds) x))
- ((funcall (car preds) x)
- (conj x (cdr preds))))))
- (lambda (x) (conj x predicates))))
-
(defun >> (arg &rest fns)
(dolist (fn fns)
(setf arg (funcall fn arg)))
@@ -49,3 +12,5 @@ the preceding predicates in the list returned non-NIL."
(lambda (arg)
(apply #'>> arg fns)))
+
+