Meta-interpreters in Prolog