From 84eae95bb40c0adeb04abdfdca8aeb00525ba9de Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Tue, 27 Sep 2022 23:14:14 -0700 Subject: [PATCH] feat: actually add CONJ and DISJ --- lens.lisp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lens.lisp b/lens.lisp index b0c10ee..a38b32e 100644 --- a/lens.lisp +++ b/lens.lisp @@ -111,6 +111,21 @@ (funcall fun it) it))) +(defmacro conj (&rest fns) + (let ((dat (gensym "dat"))) + `(lambda (,dat) + (and ,@(mapcar (lambda (fn) + `(funcall ,fn ,dat)) + fns))))) + +(defmacro disj (&rest fns) + (let ((dat (gensym "dat"))) + `(lambda (,dat) + (or ,@(mapcar (lambda (fn) + `(funcall ,fn ,dat)) + fns))))) + + (defun-ct sorted (comparator &rest r &key key) (declare (ignore key)) (lambda (it)