Duck util-list.

This commit is contained in:
Dominik Pantůček 2023-07-05 21:58:34 +02:00
parent 1a2e9ee726
commit 2f1589579e
5 changed files with 34 additions and 21 deletions

View file

@ -256,3 +256,21 @@ When the ```line``` contains whitespace character(s), it returns a
pair consisting of symbol created by interning the string of
non-whitespace characters before the first whitespace character and
the string with the rest of the line.
## util-list [module]
(import util-list)
This module implements basic list functionality which is common in
most scheme implementations.
### filter [procedure]
(filter pred?
lst)
* ```pred?``` - procedure accepting any value and returning #t or #f
* ```lst``` - list to be filtered
Returns a list containing only elements matching given ```pred?```
predicate.

View file

@ -139,21 +139,6 @@ Converts given number to a string with two-digit fractional
part. Should the fractional part be 0, it is replaced with the string
"--".
### List
(import util-list)
This module implements basic list functionality which is common in
most scheme implementations.
(filter pred? lst)
* ```pred?``` - procedure accepting any value and returning #t or #f
* ```lst``` - list to be filtered
Returns a list containing only elements matching given ```pred?```
predicate.
### Mail
(import util-mail)

View file

@ -60,11 +60,11 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \
util-time.import.scm util-csv.import.scm util-git.import.scm \
util-io.import.scm util-stdout.import.scm \
util-parser.import.scm
util-parser.import.scm util-list.import.scm
GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \
progress.o testing.o util-proc.o util-git.o util-io.o \
util-stdout.o util-parser.o
util-stdout.o util-parser.o util-list.o
.PHONY: imports
imports: $(HACKERBASE-DEPS)
@ -478,7 +478,7 @@ 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-SOURCES=util-list.scm testing.import.scm duck.import.scm
util-list.o: util-list.import.scm
util-list.import.scm: $(UTIL-LIST-SOURCES)

View file

@ -25,4 +25,5 @@
util-git
util-io
util-stdout
util-parser)
util-parser
util-list)

View file

@ -25,8 +25,12 @@
(declare (unit util-list))
(module
(import duck)
(module*
util-list
#:doc ("This module implements basic list functionality which is common in
most scheme implementations.")
(
filter
util-list-tests!
@ -39,7 +43,12 @@
testing)
;; Returns a list with elements matching pred? predicate.
(define (filter pred? lst)
(define/doc (filter pred? lst)
("* ```pred?``` - procedure accepting any value and returning #t or #f
* ```lst``` - list to be filtered
Returns a list containing only elements matching given ```pred?```
predicate.")
(let loop ((lst lst)
(res '()))
(if (null? lst)