All of us have probably written (and re-written and
re-re-...-re-written) our own alist utilities. It would be nice to
decide on a canonical set and codify them in an alist SRFI.

SLIB has some:
<http://people.csail.mit.edu/jaffer/slib/Association-Lists.html#Association-Lists>

I use the following:

- `assoc?` -- (cadr (assoc key alist)) or #f if not found

This does not follow the naming pattern used in the R7RS.
 
- `assoc1` -- (cadr (assoc key alist)) or raise exception if not found

Which exception is raised? There is no point in raising an exception when it cannot be inspected.
 
There's also the further question of whether these should check the
entire list for duplicate keys or not.

This would the already low efficiency of association lists even lower.
 
Also both (key value) and (key . value) style pairs are useful. Consing
dots are a bother to type in files, especially files that need to make
sense to people who are not Lisp fans. Hence it's good to be able to use
(key value) for external data and read it in as-is without converting
all (key value) alists to (key . value).

Using two-element lists instead of pairs means that another pair has to be needlessly allocated for each entry in the association list.

SRFI 1 has `alist-cons' and through this already sets a standard, namely pairs instead of lists for associations.