From b40fe9cdecaa05cddecfcb3f4fb46492b68c02c7 Mon Sep 17 00:00:00 2001 From: Dane Johnson Date: Fri, 28 Feb 2025 14:26:08 -0600 Subject: [PATCH] alist map/filter/for-each --- d-.scm | 15 +++++++++++++++ test.scm | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/d-.scm b/d-.scm index 361b20e..eb2b354 100644 --- a/d-.scm +++ b/d-.scm @@ -15,6 +15,9 @@ upply conjoin distinct? + amap + afilter + afor-each generator macro-expand amb @@ -103,6 +106,18 @@ (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)) + ;; Shamelessly ripped from https://wingolog.org/archives/2013/02/25/on-generators (define (make-generator f) (define tag (make-prompt-tag)) diff --git a/test.scm b/test.scm index ce0995a..c58a4dd 100644 --- a/test.scm +++ b/test.scm @@ -80,6 +80,10 @@ (define-test "vacuous" (assert-equal #t ((conjoin) '(some donkus))))) +(define-test-suite "map" + (define-test "test" + (assert-equal ))) + (define-test-suite "generator" (define-test "test" (define number-generator