aboutsummaryrefslogtreecommitdiff
path: root/functions.lisp
blob: 3c06f790f7f47d5cfb52dd736eaedec596adc77b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)))