refactor bin_op
support the syntax of "case a of (A b) => b"