In Haskell, do you name every function with a
prefix that advertises the type of its return
value or one of its main arguments?  No, of course
not.  How do you find functions that return or use
a value of a given type?  You check signatures
or doc.

Except if I'm missing somethign Haskell also groups related functions together: https://hackage.haskell.org/package/strings-1.1/docs/Data-Strings.html

 
As for "alist", "ass(q|oc)", and the like: each
such choice has its drawbacks.  But yes, some name
consistency can help, in general.  But no, because
history.  And no, because different uses/contexts.

The discussion was motivated by considering new
users, in particular.  Well then, what does a new
user look for, when it comes to alists?  Does s?he
know the term "alist"?  Or is the thought about
"association"? "key-value"? "pair"? "relation"?
"attribute-value"? "property-value"?

It has already been said that alist was a bad example. Consider process or regexp instead.

 
Consider `C-h f alist', with substring matching.
In my current session I get 156 candidates, all
of which are relevant to alists.  Great.

If I match `ass' instead, I get 235 candidates,
many of which are about alists, but many of which
are not.  If I then chip away from those matches
the matches for `class' and `pass', I get only 51
matches, of which 34 are about alists.

If I use `C-h d alist' I find 560 functions
whose doc mentions "alist".
`C-h d association list' finds 56 functions.
`C-h d assoc' finds 52 functions.

When I see this it only confuses me. Sure those are great tools to find things in a broad sense, but there are so much noise that you have to filter. The only relevant functions I'd like to find are:

assoc, rassoc, assq, alist-get, rassq, assoc-default, copy-alist, assq-delete-all, assoc-delete-all, rassq-delete-all

Anything else listed there is noise IMHO, except if searching in a broad scope.

 
Finally, the habit of assuming that functions
should be grouped only by argument or return
type, either in terms of name or doc, is not
a guide.  API doc (e.g. JavaDoc) does have its
uses.  And it's especially useful, perhaps
even necessary, for certain kinds of languages
(e.g. OOP).  But it's certainly not the be-all
and end-all.

Agreed. Still I think there is a lot of room for improvement, without going "all the way".

Philippe