Main problems are strictness and argument agregation. I.e. given the tuple: t = tuple("doit", "foo"); * Does eval(t) evaluate "foo"? * Does eval pass multiple arguments 1->... as an argument vector? It's probably best to deviated from lisp-style semantics here, and simply use method lookup and explicitly constructed argument lists.