Replace amap/afilter/afor-each with alambda, lambda which destructures a pair into two args
This commit is contained in:
parent
b40fe9cdec
commit
41b2467b42
22
d-.scm
22
d-.scm
@ -15,9 +15,7 @@
|
|||||||
upply
|
upply
|
||||||
conjoin
|
conjoin
|
||||||
distinct?
|
distinct?
|
||||||
amap
|
alambda
|
||||||
afilter
|
|
||||||
afor-each
|
|
||||||
generator
|
generator
|
||||||
macro-expand
|
macro-expand
|
||||||
amb
|
amb
|
||||||
@ -106,17 +104,13 @@
|
|||||||
(and (not (any (lambda (x) (equal? (car a) x)) (cdr a)))
|
(and (not (any (lambda (x) (equal? (car a) x)) (cdr a)))
|
||||||
(apply distinct? (cdr a)))))
|
(apply distinct? (cdr a)))))
|
||||||
|
|
||||||
(define (amap f l)
|
(define-syntax alambda
|
||||||
"Same as (map f l) but passes car and cdr to the function"
|
(syntax-rules ()
|
||||||
(map (lambda (kons) (f (car kons) (cdr cons))) l))
|
[(alambda (kar kdr) body ...)
|
||||||
|
(lambda (kons)
|
||||||
(define (afilter f l)
|
(let ([kar (car kons)]
|
||||||
"Same as (filter f l) but passes car and cdr to the function"
|
[kdr (cdr kons)])
|
||||||
(filter (lambda (kons) (f (car kons) (cdr cons))) l))
|
body ...))]))
|
||||||
|
|
||||||
(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))
|
|
||||||
|
|
||||||
;; Shamelessly ripped from https://wingolog.org/archives/2013/02/25/on-generators
|
;; Shamelessly ripped from https://wingolog.org/archives/2013/02/25/on-generators
|
||||||
(define (make-generator f)
|
(define (make-generator f)
|
||||||
|
7
test.scm
7
test.scm
@ -80,9 +80,10 @@
|
|||||||
(define-test "vacuous"
|
(define-test "vacuous"
|
||||||
(assert-equal #t ((conjoin) '(some donkus)))))
|
(assert-equal #t ((conjoin) '(some donkus)))))
|
||||||
|
|
||||||
(define-test-suite "map"
|
(define-test-suite "alambda"
|
||||||
(define-test "test"
|
(define-test "map"
|
||||||
(assert-equal )))
|
(assert-equal '(2 3 4)
|
||||||
|
(map (alambda (_ v) (1+ v)) '((a . 1) (b . 2) (c . 3))))))
|
||||||
|
|
||||||
(define-test-suite "generator"
|
(define-test-suite "generator"
|
||||||
(define-test "test"
|
(define-test "test"
|
||||||
|
Loading…
Reference in New Issue
Block a user