Re-add util-list.
This commit is contained in:
parent
a3fc293b14
commit
8526d473c5
15 changed files with 99 additions and 26 deletions
38
src/Makefile
38
src/Makefile
|
@ -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)
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
(chicken string)
|
||||
(chicken irregex)
|
||||
(chicken keyword)
|
||||
srfi-1
|
||||
util-list
|
||||
testing)
|
||||
|
||||
;; Only basic ANSI colors and bold attribute support.
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
(chicken io)
|
||||
(chicken irregex)
|
||||
(chicken string)
|
||||
srfi-1
|
||||
util-list
|
||||
brmember
|
||||
testing
|
||||
util-dict-list
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
(chicken irregex)
|
||||
(chicken string)
|
||||
(chicken format)
|
||||
srfi-1
|
||||
util-list
|
||||
util-dict-list
|
||||
testing
|
||||
cal-month
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
(chicken base)
|
||||
(chicken process-context)
|
||||
(chicken format)
|
||||
srfi-1
|
||||
util-list
|
||||
testing
|
||||
util-proc)
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
(chicken pathname)
|
||||
(chicken file)
|
||||
(chicken file posix)
|
||||
srfi-1
|
||||
util-list
|
||||
brmember
|
||||
configuration
|
||||
members-payments
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
(chicken string)
|
||||
(chicken sort)
|
||||
(chicken format)
|
||||
srfi-1
|
||||
util-list
|
||||
progress
|
||||
util-set-list
|
||||
util-io)
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
(chicken file)
|
||||
(chicken format)
|
||||
(chicken irregex)
|
||||
srfi-1
|
||||
util-list
|
||||
testing
|
||||
util-dict-list
|
||||
brmember
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
(chicken string)
|
||||
(chicken random)
|
||||
(chicken sort)
|
||||
srfi-1
|
||||
util-list
|
||||
testing
|
||||
util-dict-list
|
||||
primes
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
(chicken base)
|
||||
(chicken format)
|
||||
(chicken sort)
|
||||
srfi-1
|
||||
util-list
|
||||
configuration
|
||||
brmember
|
||||
cal-month
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
(chicken process-context)
|
||||
(chicken pathname)
|
||||
(chicken condition)
|
||||
srfi-1
|
||||
util-list
|
||||
bank-account
|
||||
brmember
|
||||
mbase
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
(chicken string)
|
||||
(chicken sort)
|
||||
(chicken format)
|
||||
srfi-1
|
||||
util-list
|
||||
util-dict-list
|
||||
brmember
|
||||
cal-month
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
(import scheme
|
||||
(chicken base)
|
||||
srfi-1
|
||||
util-list
|
||||
testing)
|
||||
|
||||
;; Checks whether given number is prime by checking the remainder of
|
||||
|
|
|
@ -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
61
src/util-list.scm
Normal 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)) '())
|
||||
))
|
||||
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue