aboutsummaryrefslogtreecommitdiff
path: root/functions.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'functions.lisp')
-rw-r--r--functions.lisp28
1 files changed, 28 insertions, 0 deletions
diff --git a/functions.lisp b/functions.lisp
new file mode 100644
index 0000000..3c06f79
--- /dev/null
+++ b/functions.lisp
@@ -0,0 +1,28 @@
+;;;; lambda-tools.lisp
+
+(in-package #:lambda-riffs)
+
+(defun -> (arg &rest fns)
+ (dolist (fn fns arg)
+ (setf arg (funcall fn arg))))
+
+(defun all> (arg &rest preds)
+ "Predicate Filter. Returns ARG if (PRED ARG) is non-NIL for each
+PRED in PREDS"
+ (dolist (pred preds arg)
+ (unless (funcall pred arg)
+ (return-from all> nil))))
+
+
+(defun some> (arg &rest preds)
+ (dolist (pred preds nil)
+ (when (funcall pred arg)
+ (return-from some> arg))))
+
+
+(defun <> (&rest fns)
+ (lambda (arg)
+ (apply #'>> arg fns)))
+
+
+