If this code isn't going to reside in a dll AND/Or directly exchange with LISP I don't understand why you use variants when explicit typing should prevail. Am I missing something?
In other words, as I understood the question, "What is the equivalent VB technique to mimic LISP's member function?", not "How do I pass a list to VB and have it perform a member type query?".
Could be me, surviving on crumbs of sleep.