In some programming languages, eval is a function which evaluates a string as though it were an expression and returns a result; in others, it executes multiple lines of code as though they had been included instead of the line including the eval. The input to eval is not necessarily a string; in languages that support syntactic abstractions (like Lisp), eval’s input will consist of abstract syntactic forms. Eval and apply are instances of meta-circular evaluators, interpreters of a language that can be invoked within the language itself.