From d7156daf6d166a8f4a5ede5d35854f71d0b88db8 Mon Sep 17 00:00:00 2001 From: Brady McDonough Date: Wed, 6 Jan 2021 15:35:50 -0700 Subject: [PATCH] Logical list operator: l& lp& --- tk/listlogic.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tk/listlogic.scm diff --git a/tk/listlogic.scm b/tk/listlogic.scm new file mode 100644 index 0000000..4f0dd75 --- /dev/null +++ b/tk/listlogic.scm @@ -0,0 +1,14 @@ +(define (lp& p ls1 ls2) + (let loop ((ls1 ls1) (ls2 ls2)) + (cond ((not (and (pair? ls1) (pair? ls2))) + '()) + ((p (car ls1) (car ls2)) + (cons (car ls1) (loop (cdr ls1) (cdr ls2)))) + (else '()) + ))) + +(define (ls& ls1 ls2) + (cond ((eqv? ls1 ls2) ls1) + (else (lp& eqv? ls1 ls2)))) + +