Replace amap/afilter/afor-each with alambda, lambda which destructures a pair into two args

This commit is contained in:
2025-03-03 09:02:10 -06:00
parent b40fe9cdec
commit 41b2467b42
2 changed files with 12 additions and 17 deletions

22
d-.scm
View File

@@ -15,9 +15,7 @@
upply
conjoin
distinct?
amap
afilter
afor-each
alambda
generator
macro-expand
amb
@@ -106,17 +104,13 @@
(and (not (any (lambda (x) (equal? (car a) x)) (cdr a)))
(apply distinct? (cdr a)))))
(define (amap f l)
"Same as (map f l) but passes car and cdr to the function"
(map (lambda (kons) (f (car kons) (cdr cons))) l))
(define (afilter f l)
"Same as (filter f l) but passes car and cdr to the function"
(filter (lambda (kons) (f (car kons) (cdr cons))) l))
(define (afor-each f l)
"Same as (for-each f l) but passes car and cdr to the function"
(for-each (lambda (kons) (f (car kons) (cdr cons))) l))
(define-syntax alambda
(syntax-rules ()
[(alambda (kar kdr) body ...)
(lambda (kons)
(let ([kar (car kons)]
[kdr (cdr kons)])
body ...))]))
;; Shamelessly ripped from https://wingolog.org/archives/2013/02/25/on-generators
(define (make-generator f)