summaryrefslogtreecommitdiffstats
path: root/srfi-225.html
diff options
context:
space:
mode:
authorGravatar John Cowan 2022-05-24 18:14:34 -0400
committerGravatar John Cowan 2022-05-24 18:14:34 -0400
commit305a792fa424fb6f2b459815a1c316020a2a6c1b (patch)
tree2509144a9d92668e617e1e80c08b7a5d1ff4dcab /srfi-225.html
parenteditorial (diff)
wip
Diffstat (limited to '')
-rw-r--r--srfi-225.html15
1 files changed, 4 insertions, 11 deletions
diff --git a/srfi-225.html b/srfi-225.html
index a769e89..7d4cde7 100644
--- a/srfi-225.html
+++ b/srfi-225.html
@@ -42,7 +42,9 @@ None at present.
<p>Until recently there was only one universally available mechanism for managing key-value pairs: alists.
Most Schemes also support hash tables, but until R6RS there was no standard interface to them, and many implementations
- do not provide that interface.</p>
+ do not provide that interface..p>/p>
+In addition, alists can have multiple entries with the
+same key, which makes them atypical instances of persistent dictionaries.</p>
<p>Now, however, the number of such mechanisms is growing. In addition to both R6RS and R7RS hash tables,
there are R7RS persistent inherently ordered and hashed mappings from SRFI 146,
inherently ordered mappings with fixnum keys from SRFI 224,
@@ -74,7 +76,7 @@ None at present.
<code>dict-copy</code>, or similar procedures provided by this SRFI.</p>
<h2 id="specification">Specification</h2>
<p>We call a specific key-value combination an <em>association</em>.
- This is why an alist, or association list, is called that; it is a list of associations represented as pairs.</p>
+ (This is why an alist, or association list, is called that; it is a list of associations represented as pairs.)</p>
<p>A <em>dictionary</em> or <em>dict</em> is a collection of associations which may or may not be inherently ordered by their keys.
In principle an <em>equality predicate</em> is enough, given a key,
to determine whether an association with that key exists in the dictionary.
@@ -89,15 +91,6 @@ None at present.
<blockquote><pre>(dict-delete '((1 . 2) (1 . 3) (2 . 4)) 1) => ((1 . 3) (2 . 4))
</pre></blockquote>
<h3 id="alists">Alists</h3>
-<p>Alists are supported as dictionaries, but are given special treatment.
- New values are added to the beginning of the alist and the new alist is returned.
- If an association has been updated, then both the new and the old association
- may be processed by the whole-dictionary procedures. The examples in this SRFI use alists.</p>
-<p>An alist (unlike a hashtable or mapping) does not know which equality predicate its users intend to use on it.
- Therefore, rather than exporting a single DTO for all alists,
- this SRFI provides a procedure <code>make-alist-dto</code> that takes an equality predicate
- and returns a DTO specialized for manipulation of alists using that predicate.
- For convenience, DTOs for <code>eqv?</code> and <code>equal?</code> are exported.</p>
<p>Each of the following examples is assumed to be prefixed by the following definitions:</p>
<blockquote><pre>(define dict (list '(1 . 2) '(3 . 4) '(5 . 6)))
(define aed alist-eqv-dto)
.com/avatar/2fce9f8dd90949315d789a6546dfacd0?s=13&d=retro' width='13' height='13' alt='Gravatar' /> bencollins 2-4/+6 2003-09-11Async stream support from Jim Radford.Gravatar bencollins 3-0/+42 2003-07-22Increase so maj/age so account for new recv-flush call.Gravatar bencollins 1-2/+2 2003-07-22Patch from Stephen Tiedemann to allow reentrancy in raw1394's usage ofGravatar bencollins 7-200/+199 2003-07-17Patch from Dan Maas to add raw1394_iso_recv_flush() call to API, using theGravatar bencollins 2-3/+25 2003-07-17pkg-config support from Kristian Hogsberg.Gravatar bencollins 3-1/+15 2003-07-17Remove trailing whitespace, which automake chokes on.Gravatar bencollins 1-1/+1 2003-07-13Fixed section for -dev package.Gravatar bencollins 1-1/+1 2003-07-13Re-add the pdf buildGravatar bencollins 1-0/+1 2003-07-13Update Debian files.Gravatar bencollins 4-25/+73 2003-07-13Ok, the Debian package was way out of sync with upstreamGravatar bencollins 1-1/+1 2003-07-13Ooops...libtool works a bit different than I thought, but atleast it worksGravatar bencollins 2-6/+1 2003-07-13Generate and install the pdf in the Debian package.Gravatar bencollins 3-3/+4 2003-07-13Don't run configure at the end of autogen.sh. Also, remove autom4te.cache.Gravatar bencollins 1-1/+1 2003-07-13Update Debian maintainerGravatar bencollins 1-1/+2 2003-07-13Update Debian changelog.Gravatar bencollins 1-0/+8 2003-07-13File doesn't really seem needed. The NEWS file gives a good overview, andGravatar bencollins 1-4/+0 2003-07-13Fix compiler warnings.Gravatar bencollins 4-12/+22 2003-07-13Updates from 0.10.0 release.Gravatar bencollins 4-5/+14 2003-04-23add libtoolize to bootstrapGravatar ddennedy 1-1/+10 2003-04-21added Dan Maas' rawiso docsGravatar ddennedy 1-32/+295 2003-04-07new_handle_on_port() error path fix from Jim RadfordGravatar dmaas 1-1/+3 2003-03-26add raw1394_new_handle_on_port() convenience functionGravatar dmaas 2-1/+41 2003-02-22Updates for new rawiso ioctl interface.Gravatar bencollins 3-37/+125 2003-01-15add iso_xmit_sync() and iso_xmit_write(); clean up iso handling a bitGravatar dmaas 5-39/+161 2003-01-15implement tag matching for rawiso receptionGravatar dmaas 3-4/+12 2003-01-06back out previous commit - don't drop the legacy API just yetGravatar dmaas 6-173/+130 2003-01-05emulate legacy ISO reception API on top of new rawiso APIGravatar dmaas 7-131/+174 2002-12-24update iso API for multi-channel reception and new packet buffer layoutGravatar dmaas 4-123/+236 2002-12-20oops, irq_interval needs to be signedGravatar anonymous 1-1/+1 2002-12-20dmaas - renamed exported arm definitions into the raw1394_ namespace; brought...Gravatar anonymous 3-124/+48 2002-12-16rawiso updates:Gravatar dmaas 3-18/+25 2002-11-18fix cplusplus extern C blockGravatar ddennedy 1-4/+4 2002-11-18merged rawiso branchGravatar ddennedy 7-6/+488