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.o: util-dict-list.import.scm
util-dict-list.import.scm: $(UTIL-DICT-LIST-SOURCES) 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.o: ansi.import.scm
ansi.import.scm: $(ANSI-SOURCES) ansi.import.scm: $(ANSI-SOURCES)
COMMAND-LINE-SOURCES=command-line.scm testing.import.scm \ 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.o: command-line.import.scm
command-line.import.scm: $(COMMAND-LINE-SOURCES) 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 \ primes.import.scm brmember.import.scm ansi.import.scm \
cal-period.import.scm cal-month.import.scm \ cal-period.import.scm cal-month.import.scm \
configuration.import.scm progress.import.scm \ configuration.import.scm progress.import.scm \
table-old.import.scm mbase-dir.import.scm util-tag.import.scm \ table-old.import.scm mbase-dir.import.scm \
racket-kwargs.import.scm util-dict-bst.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.o: mbase.import.scm
mbase.import.scm: $(MBASE-SOURCES) 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.o: primes.import.scm
primes.import.scm: $(PRIMES-SOURCES) primes.import.scm: $(PRIMES-SOURCES)
@ -146,7 +147,8 @@ primes.import.scm: $(PRIMES-SOURCES)
BRMEMBER-SOURCES=brmember.scm util-dict-list.import.scm \ BRMEMBER-SOURCES=brmember.scm util-dict-list.import.scm \
cal-period.import.scm testing.import.scm cal-month.import.scm \ cal-period.import.scm testing.import.scm cal-month.import.scm \
configuration.import.scm primes.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.o: brmember.import.scm
brmember.import.scm: $(BRMEMBER-SOURCES) brmember.import.scm: $(BRMEMBER-SOURCES)
@ -162,7 +164,8 @@ progress.o: progress.import.scm
progress.import.scm: $(PROGRESS-SOURCES) progress.import.scm: $(PROGRESS-SOURCES)
TABLE-OLD-SOURCES=table-old.scm ansi.import.scm testing.import.scm \ 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.o: table-old.import.scm
table-old.import.scm: $(TABLE-OLD-SOURCES) 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 \ testing.import.scm util-dict-list.import.scm \
cal-month.import.scm cal-period.import.scm \ cal-month.import.scm cal-period.import.scm \
configuration.import.scm util-string.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.o: brmember-parser.import.scm
brmember-parser.import.scm: $(BRMEMBER-PARSER-SOURCES) 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 \ bank-account.import.scm members-fees.import.scm \
members-payments.import.scm brmember-format.import.scm \ members-payments.import.scm brmember-format.import.scm \
specification.import.scm cal-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.o: members-print.import.scm
members-print.import.scm: $(MEMBERS-PRINT-SOURCES) members-print.import.scm: $(MEMBERS-PRINT-SOURCES)
MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \ MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \
brmember.import.scm cal-month.import.scm table-old.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.o: members-fees.import.scm
members-fees.import.scm: $(MEMBERS-FEES-SOURCES) members-fees.import.scm: $(MEMBERS-FEES-SOURCES)
MBASE-DIR-SOURCES=mbase-dir.scm testing.import.scm \ MBASE-DIR-SOURCES=mbase-dir.scm testing.import.scm \
util-dict-list.import.scm brmember.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.o: mbase-dir.import.scm
mbase-dir.import.scm: $(MBASE-DIR-SOURCES) 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 \ util-dict-list.import.scm members-fees.import.scm \
cal-period.import.scm configuration.import.scm \ cal-period.import.scm configuration.import.scm \
progress.import.scm bank-fio.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.o: members-payments.import.scm
members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES) members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES)
EXPORT-WIKI-COMPAT-SOURCES=export-wiki-compat.scm brmember.import.scm \ EXPORT-WIKI-COMPAT-SOURCES=export-wiki-compat.scm brmember.import.scm \
configuration.import.scm members-payments.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.o: export-wiki-compat.import.scm
export-wiki-compat.import.scm: $(EXPORT-WIKI-COMPAT-SOURCES) 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 \ MAILMAN-SOURCES=mailman.scm progress.import.scm \
util-set-list.import.scm util-io.import.scm \ util-set-list.import.scm util-io.import.scm \
util-list.import.scm
mailman.o: mailman.import.scm mailman.o: mailman.import.scm
mailman.import.scm: $(MAILMAN-SOURCES) 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.o: box-drawing.import.scm
box-drawing.import.scm: $(BOX-DRAWING-SOURCES) 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 string)
(chicken irregex) (chicken irregex)
(chicken keyword) (chicken keyword)
srfi-1 util-list
testing) testing)
;; Only basic ANSI colors and bold attribute support. ;; Only basic ANSI colors and bold attribute support.

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -40,7 +40,7 @@
(chicken format) (chicken format)
(chicken keyword) (chicken keyword)
(chicken irregex) (chicken irregex)
srfi-1 util-list
ansi ansi
testing testing
util-string 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)) '())
))
)