-
Notifications
You must be signed in to change notification settings - Fork 2
/
alist.txi
76 lines (53 loc) · 2.21 KB
/
alist.txi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@code{(require 'alist)}
@ftindex alist
Alist functions provide utilities for treating a list of key-value pairs
as an associative database. These functions take an equality predicate,
@var{pred}, as an argument. This predicate should be repeatable,
symmetric, and transitive.
Alist functions can be used with a secondary index method such as hash
tables for improved performance.
@defun predicate->asso pred
Returns an @dfn{association function} (like @code{assq}, @code{assv}, or
@cindex association function
@code{assoc}) corresponding to @var{pred}. The returned function
returns a key-value pair whose key is @code{pred}-equal to its first
argument or @code{#f} if no key in the alist is @var{pred}-equal to the
first argument.
@end defun
@defun alist-inquirer pred
Returns a procedure of 2 arguments, @var{alist} and @var{key}, which
returns the value associated with @var{key} in @var{alist} or @code{#f} if
@var{key} does not appear in @var{alist}.
@end defun
@defun alist-associator pred
Returns a procedure of 3 arguments, @var{alist}, @var{key}, and
@var{value}, which returns an alist with @var{key} and @var{value}
associated. Any previous value associated with @var{key} will be
lost. This returned procedure may or may not have side effects on its
@var{alist} argument. An example of correct usage is:
@lisp
(define put (alist-associator string-ci=?))
(define alist '())
(set! alist (put alist "Foo" 9))
@end lisp
@end defun
@defun alist-remover pred
Returns a procedure of 2 arguments, @var{alist} and @var{key}, which
returns an alist with an association whose @var{key} is key removed.
This returned procedure may or may not have side effects on its
@var{alist} argument. An example of correct usage is:
@lisp
(define rem (alist-remover string-ci=?))
(set! alist (rem alist "foo"))
@end lisp
@end defun
@defun alist-map proc alist
Returns a new association list formed by mapping @var{proc} over the
keys and values of @var{alist}. @var{proc} must be a function of 2
arguments which returns the new value part.
@end defun
@defun alist-for-each proc alist
Applies @var{proc} to each pair of keys and values of @var{alist}.
@var{proc} must be a function of 2 arguments. The returned value is
unspecified.
@end defun