These are something you do not need to worry about since we will not use invalid programs to test your interpreter. The following primitive functions must be implemented. The meanings of these functions are the same as those in Lisp where first and rest are identified with car and cdr respectively. Note that a function is identified by its name and arity. An evaluation step described above is called a reduction .
Reduction is performed repeatedly until no further reduction is possible.
An expression that is not reducible is called a normal form . So, the goal of an interpreter for FL is to reduce a given expression to a normal form using the definitions in the given program. This is why a function may or may not be a defined function . The system described here is called a rewrite system. An instance of L is reduced to R with the same instantiation of the formal parameters.