Support basic 'then' syntax

 * Active only under -Yrich-for
 * Supports applying a function to the current state of the for
 * Error messages are poor
 * Does not generate functions from propagated variables