1) Doesn't have the side effect of modifying its input list on error.
2) Accepts the argument, instead of the list containing the argument.
It also changes lform() to use the new function to provide that it's correct.
This is part of a larger effort to simplify by the code base by reducing the number of unneeded side effects.