| Literal of literal
| Layout of layout_pattern
+
| Magic of magic_term
| Variable of pattern_variable
|+ column separator, row separator +| *)
| Sqrt of term
| Root of term * term (* argument, index *)
-(* | Break *)
+ | Break
| Box of box_spec * term list
and magic_term =
| Fold of fold_kind * term * string list * term
(* base case pattern, recursive case bound names, recursive case pattern *)
| Default of term * term (* "some" case pattern, "none" case pattern *)
- | If of term * term (* guard, body *)
- | Unless of term * term (* guard, body *)
+ | Fail
+ | If of term * term * term (* test, pattern if true, pattern if false *)
and pattern_variable =
(* level 1 and 2 variables *)