Evaluate arguments when applying
Correctly support empty argument lists
Correctly evaluate the head of lists
Check for error when evaluating subexpression and cleanup