combinators: Fix any-of and juxt
parent
e8f0c30402
commit
2602e1d3de
|
@ -18,11 +18,13 @@ element of LST satisfies PRED."
|
||||||
(define (any-of pred)
|
(define (any-of pred)
|
||||||
"Returns a procedure that takes a list LST and returns #t if any element of
|
"Returns a procedure that takes a list LST and returns #t if any element of
|
||||||
LST satisfies PRED."
|
LST satisfies PRED."
|
||||||
(match-lambda
|
(lambda (lst)
|
||||||
(() #f)
|
(let loop ((lst lst))
|
||||||
|
(match
|
||||||
|
('() #f)
|
||||||
((head . tail)
|
((head . tail)
|
||||||
(cond ((pred head) #t)
|
(cond ((pred head) #t)
|
||||||
(else (any? pred tail))))))
|
(else (loop tail))))))))
|
||||||
|
|
||||||
(define (conjoin . predicates)
|
(define (conjoin . predicates)
|
||||||
"Returns a procedure that is the conjuction of every predicate in PREDICATES.
|
"Returns a procedure that is the conjuction of every predicate in PREDICATES.
|
||||||
|
@ -77,5 +79,6 @@ of aditional arguments."
|
||||||
"Returns a procedure that is the juxtaposition of it's argument procedures.
|
"Returns a procedure that is the juxtaposition of it's argument procedures.
|
||||||
The returned procedure takes a variable number of args, and returns a list
|
The returned procedure takes a variable number of args, and returns a list
|
||||||
containing the result of applying each procedure to the args (left-to-right)."
|
containing the result of applying each procedure to the args (left-to-right)."
|
||||||
|
(lambda args
|
||||||
(map (partial (flip apply) args)
|
(map (partial (flip apply) args)
|
||||||
(cons proc more-procs)))
|
(cons proc more-procs))))
|
||||||
|
|
Loading…
Reference in New Issue