catchFail <try> | push (const Haskell) | read | lift ($) | popFail | ret <handler> pushInput lift InstrPureSameOffset choices [id] <branch> | push (const Haskell) | read | lift ($) | ret <default> fail