>Also, it doesn't seem to be particularly useful unless you have "objects" ... so there are some language dependencies. Using "scoping rules", I can affect polymorphism in a procedural language, but it's pretty clumsy.
That depends on what you define as "clumsy". I used to do this in 2.6 all the time:
SET PROCEDURE TO pig
DO speak
SET PROCEDURE TO cow
DO speak
PROCEDURE speak
?"Oink"
PROCEDURE speak
?"Moo"