combinator library with get/put/update user state; example with tracking input line/column and matching braces -- when unmatched { or } are found, an error message can be generated which includes the location