catchFail <try> | catchFail | <try> | | pushInput | | read (\u1 -> Term) | | pop | | popFail | | loadInput | | fail | <handler> | loadInput | push Term | popFail | ret <handler> pushInput lift Term choices [(\u1 -> u1)] <branch> | fail <default> fail