catchException "fail" | pushValue (\u1 -> 'a') | read ('a' ==) | lift2Value (\u1 -> (\u2 -> u1 u2)) | popException "fail" | ret pushInput lift2Value Term choicesBranch [(\u1 -> u1)] | pushValue (\u1 -> 'b') | read ('b' ==) | lift2Value (\u1 -> (\u2 -> u1 u2)) | ret raiseException "fail"