Conventional OOP does type dispatch on the first argument, so foo.<TAB> in IDEs is helpful. Statically typed functions could do the same!
miniblog.
Related Posts
Making the most of Magit, and a helpful pointer to magit-file-dispatch which was new to me:
https://emacsredux.com/blog/2020/12/10/essential-magit-file-commands/
Shower thought: Smalltalk (and to some extent other OO languages) replace pattern matching with dynamic dispatch.
I miss pattern matching in Lisp dialects without a good implementation, but I haven't noticed its absence in Smalltalk.
Racket has 2 object systems, both single dispatch and CLOS style multimethods! Single dispatch is the default, which seems to help cohesion.