6.1 mischief/list: Lists and Pairs
(require mischief/list) | package: mischief |
procedure
(make-alist keys value) → (listof cons?)
keys : list? value : any/c
Returns an association list in which the cars of the elements are the
given keys in order and the cdr of each element is
value.
Example:
> (make-alist '(1 2 3) 'number) '((1 . number) (2 . number) (3 . number))
Returns an association list in which the cars of the elements are the
given keys in order and the cdr of each element is
the result of proc applied to its car.
Example:
> (build-alist '(one two three) symbol->string) '((one . "one") (two . "two") (three . "three"))
Maps proc over each element in one or more lists of lists.
Examples:
> (map-map string->symbol '(("bat" "cat") ("hat" "sat") ("mat"))) '((bat cat) (hat sat) (mat))
> (map-map + '((1 2) (3)) '((4 5) (6))) '((5 7) (9))
procedure
x : any/c xs : list? equiv? : (-> any/c any/c boolean?) = equal?
procedure
x : any/c xs : list?
procedure
x : any/c xs : list?
Examples:
> (member? "cat" '("bat" "cat" "hat")) #t
> (member? "mat" '("bat" "cat" "hat")) #f
> (memv? 3 '(1 2 3)) #t
> (memv? 12 '(1 2 3)) #f
> (memq? 'a '(a b c)) #t
> (memq? 'd '(a b c)) #f
Partitions multiple lists based on pred as a generalization of
partition. Returns results as multiple values: the lists of
respective values for which pred was true followed by the lists of
respective values for which pred was false.
Example:
> (partition* = '[1 2 3 4] '[1.0 -2.0 3.0 -4.0]) '(1 3)
'(1.0 3.0)
'(2 4)
'(-2.0 -4.0)
procedure
(take-while pred xs) → list?
pred : predicate/c xs : list?
procedure
(take-until pred xs) → list?
pred : predicate/c xs : list?
procedure
(drop-while pred xs) → list?
pred : predicate/c xs : list?
procedure
(drop-until pred xs) → list?
pred : predicate/c xs : list?
Produce a prefix or suffix of xs based on applying pred to
elements at the front of xs.
Examples:
> (take-while negative? '[-2 -1 0 1 2]) '(-2 -1)
> (take-until positive? '[-2 -1 0 1 2]) '(-2 -1 0)
> (drop-while negative? '[-2 -1 0 1 2]) '(0 1 2)
> (drop-until positive? '[-2 -1 0 1 2]) '(1 2)
procedure
(sort/unique xs <? [ #:key key #:cache-keys? cache-keys?]) → list? xs : list? <? : (-> any/c any/c boolean?) key : (-> any/c any/c) = identity cache-keys? : boolean? = #false
As sort, but discards duplicate elements.
Example:
> (sort/unique (list 2 7 1 8 2 8) <) '(1 2 7 8)