in reply to Elegant way to call a method

Just as you do not want a variable to contain the arbitrary name of a variable that you reference, you do not want a variable to contain the arbitrary name of a function that you call. Dispatch-tables, by any other name, are a fine solution ... so are if..elsif blocks. Throw an exception at a well-defined point if you are given a name that you are not somehow explicitly-prepared to recognize, because this is the only way that you will find that bug. Another technique that I like to use is to specify that the variable must be the name of an object of a specified class or parent-class, which contains a method that I will call. The invoking routine verifies that the object exists, and that it is of the proper class, and wraps the method-call in an exception handler. (This strategy provides context, contained in the object-instance.) You can do this sort of thing in many programming languages and it works everywhere.