Re-add util-list.

This commit is contained in:
Dominik Pantůček 2023-06-15 16:11:36 +02:00
parent a3fc293b14
commit 8526d473c5
15 changed files with 99 additions and 26 deletions

View file

@ -117,13 +117,13 @@ UTIL-DICT-LIST-SOURCES=util-dict-list.scm testing.import.scm \
util-dict-list.o: util-dict-list.import.scm
util-dict-list.import.scm: $(UTIL-DICT-LIST-SOURCES)
ANSI-SOURCES=ansi.scm testing.import.scm
ANSI-SOURCES=ansi.scm testing.import.scm util-list.import.scm
ansi.o: ansi.import.scm
ansi.import.scm: $(ANSI-SOURCES)
COMMAND-LINE-SOURCES=command-line.scm testing.import.scm \
util-proc.import.scm
util-proc.import.scm util-list.import.scm
command-line.o: command-line.import.scm
command-line.import.scm: $(COMMAND-LINE-SOURCES)
@ -132,13 +132,14 @@ MBASE-SOURCES=mbase.scm testing.import.scm util-dict-list.import.scm \
primes.import.scm brmember.import.scm ansi.import.scm \
cal-period.import.scm cal-month.import.scm \
configuration.import.scm progress.import.scm \
table-old.import.scm mbase-dir.import.scm util-tag.import.scm \
racket-kwargs.import.scm util-dict-bst.import.scm
table-old.import.scm mbase-dir.import.scm \
util-tag.import.scm racket-kwargs.import.scm \
util-dict-bst.import.scm util-list.import.scm
mbase.o: mbase.import.scm
mbase.import.scm: $(MBASE-SOURCES)
PRIMES-SOURCES=primes.scm testing.import.scm
PRIMES-SOURCES=primes.scm testing.import.scm util-list.import.scm
primes.o: primes.import.scm
primes.import.scm: $(PRIMES-SOURCES)
@ -146,7 +147,8 @@ primes.import.scm: $(PRIMES-SOURCES)
BRMEMBER-SOURCES=brmember.scm util-dict-list.import.scm \
cal-period.import.scm testing.import.scm cal-month.import.scm \
configuration.import.scm primes.import.scm \
bank-account.import.scm util-tag.import.scm
bank-account.import.scm util-tag.import.scm \
util-list.import.scm
brmember.o: brmember.import.scm
brmember.import.scm: $(BRMEMBER-SOURCES)
@ -162,7 +164,8 @@ progress.o: progress.import.scm
progress.import.scm: $(PROGRESS-SOURCES)
TABLE-OLD-SOURCES=table-old.scm ansi.import.scm testing.import.scm \
util-string.import.scm racket-kwargs.import.scm
util-string.import.scm racket-kwargs.import.scm \
util-list.import.scm
table-old.o: table-old.import.scm
table-old.import.scm: $(TABLE-OLD-SOURCES)
@ -177,7 +180,8 @@ BRMEMBER-PARSER-SOURCES=brmember-parser.scm brmember.import.scm \
testing.import.scm util-dict-list.import.scm \
cal-month.import.scm cal-period.import.scm \
configuration.import.scm util-string.import.scm \
util-parser.import.scm cal-day.import.scm
util-parser.import.scm cal-day.import.scm \
util-list.import.scm
brmember-parser.o: brmember-parser.import.scm
brmember-parser.import.scm: $(BRMEMBER-PARSER-SOURCES)
@ -189,21 +193,22 @@ MEMBERS-PRINT-SOURCES=members-print.scm util-dict-list.import.scm \
bank-account.import.scm members-fees.import.scm \
members-payments.import.scm brmember-format.import.scm \
specification.import.scm cal-format.import.scm \
util-git.import.scm
util-git.import.scm util-list.import.scm
members-print.o: members-print.import.scm
members-print.import.scm: $(MEMBERS-PRINT-SOURCES)
MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \
brmember.import.scm cal-month.import.scm table-old.import.scm \
mbase.import.scm specification.import.scm
mbase.import.scm specification.import.scm \
util-list.import.scm
members-fees.o: members-fees.import.scm
members-fees.import.scm: $(MEMBERS-FEES-SOURCES)
MBASE-DIR-SOURCES=mbase-dir.scm testing.import.scm \
util-dict-list.import.scm brmember.import.scm \
brmember-parser.import.scm
brmember-parser.import.scm util-list.import.scm
mbase-dir.o: mbase-dir.import.scm
mbase-dir.import.scm: $(MBASE-DIR-SOURCES)
@ -229,14 +234,15 @@ MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm \
util-dict-list.import.scm members-fees.import.scm \
cal-period.import.scm configuration.import.scm \
progress.import.scm bank-fio.import.scm \
specification.import.scm
specification.import.scm util-list.import.scm
members-payments.o: members-payments.import.scm
members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES)
EXPORT-WIKI-COMPAT-SOURCES=export-wiki-compat.scm brmember.import.scm \
configuration.import.scm members-payments.import.scm \
mbase.import.scm util-git.import.scm progress.import.scm
mbase.import.scm util-git.import.scm progress.import.scm \
util-list.import.scm
export-wiki-compat.o: export-wiki-compat.import.scm
export-wiki-compat.import.scm: $(EXPORT-WIKI-COMPAT-SOURCES)
@ -248,6 +254,7 @@ environment.import.scm: $(ENVIRONMENT-SOURCES)
MAILMAN-SOURCES=mailman.scm progress.import.scm \
util-set-list.import.scm util-io.import.scm \
util-list.import.scm
mailman.o: mailman.import.scm
mailman.import.scm: $(MAILMAN-SOURCES)
@ -462,3 +469,8 @@ BOX-DRAWING-SOURCES=box-drawing.scm util-utf8.import.scm \
box-drawing.o: box-drawing.import.scm
box-drawing.import.scm: $(BOX-DRAWING-SOURCES)
UTIL-LIST-SOURCES=util-list.scm testing.import.scm
util-list.o: util-list.import.scm
util-list.import.scm: $(UTIL-LIST-SOURCES)

View file

@ -50,7 +50,7 @@
(chicken string)
(chicken irregex)
(chicken keyword)
srfi-1
util-list
testing)
;; Only basic ANSI colors and bold attribute support.

View file

@ -36,7 +36,7 @@
(chicken io)
(chicken irregex)
(chicken string)
srfi-1
util-list
brmember
testing
util-dict-list

View file

@ -91,7 +91,7 @@
(chicken irregex)
(chicken string)
(chicken format)
srfi-1
util-list
util-dict-list
testing
cal-month

View file

@ -40,7 +40,7 @@
(chicken base)
(chicken process-context)
(chicken format)
srfi-1
util-list
testing
util-proc)

View file

@ -40,7 +40,7 @@
(chicken pathname)
(chicken file)
(chicken file posix)
srfi-1
util-list
brmember
configuration
members-payments

View file

@ -59,7 +59,7 @@
(chicken string)
(chicken sort)
(chicken format)
srfi-1
util-list
progress
util-set-list
util-io)

View file

@ -40,7 +40,7 @@
(chicken file)
(chicken format)
(chicken irregex)
srfi-1
util-list
testing
util-dict-list
brmember

View file

@ -65,7 +65,7 @@
(chicken string)
(chicken random)
(chicken sort)
srfi-1
util-list
testing
util-dict-list
primes

View file

@ -45,7 +45,7 @@
(chicken base)
(chicken format)
(chicken sort)
srfi-1
util-list
configuration
brmember
cal-month

View file

@ -46,7 +46,7 @@
(chicken process-context)
(chicken pathname)
(chicken condition)
srfi-1
util-list
bank-account
brmember
mbase

View file

@ -46,7 +46,7 @@
(chicken string)
(chicken sort)
(chicken format)
srfi-1
util-list
util-dict-list
brmember
cal-month

View file

@ -35,7 +35,7 @@
(import scheme
(chicken base)
srfi-1
util-list
testing)
;; Checks whether given number is prime by checking the remainder of

View file

@ -40,7 +40,7 @@
(chicken format)
(chicken keyword)
(chicken irregex)
srfi-1
util-list
ansi
testing
util-string

61
src/util-list.scm Normal file
View file

@ -0,0 +1,61 @@
;;
;; util-list.scm
;;
;; Various utilities so that no external libraries are needed.
;;
;; ISC License
;;
;; Copyright 2023 Brmlab, z.s.
;; Dominik Pantůček <dominik.pantucek@trustica.cz>
;;
;; Permission to use, copy, modify, and/or distribute this software
;; for any purpose with or without fee is hereby granted, provided
;; that the above copyright notice and this permission notice appear
;; in all copies.
;;
;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
;;
(declare (unit util-list))
(module
util-list
(
filter
util-list-tests!
)
(import scheme
(chicken base)
(chicken io)
(chicken process)
testing)
;; Returns a list with elements matching pred? predicate.
(define (filter pred? lst)
(let loop ((lst lst)
(res '()))
(if (null? lst)
(reverse res)
(if (pred? (car lst))
(loop (cdr lst)
(cons (car lst) res))
(loop (cdr lst)
res)))))
;; Performs utils module self-tests.
(define (util-list-tests!)
(run-tests
util-list
(test-equal? filter (filter odd? '(1 2 3 4)) '(1 3))
(test-equal? filter (filter odd? '(2 4)) '())
))
)