| 36 |
"top" RIGHTA |
"top" RIGHTA |
| 37 |
[ "match"; e = SELF; "with"; b = branches -> mk loc (Match (e,b)) |
[ "match"; e = SELF; "with"; b = branches -> mk loc (Match (e,b)) |
| 38 |
| "map"; e = SELF; "with"; b = branches -> mk loc (Map (e,b)) |
| "map"; e = SELF; "with"; b = branches -> mk loc (Map (e,b)) |
| 39 |
|
| "transform"; e = SELF; "with"; b = branches -> |
| 40 |
|
mk noloc (Op ("flatten", [mk loc (Map (e,b))])) |
| 41 |
| "fun"; f = OPT LIDENT; "("; a = LIST1 arrow SEP ";"; ")"; |
| "fun"; f = OPT LIDENT; "("; a = LIST1 arrow SEP ";"; ")"; |
| 42 |
b = branches -> |
b = branches -> |
| 43 |
mk loc (Abstraction { fun_name = f; fun_iface = a; fun_body = b }) |
mk loc (Abstraction { fun_name = f; fun_iface = a; fun_body = b }) |
| 46 |
] |
] |
| 47 |
|
|
| 48 |
| |
| |
| 49 |
[ e1 = expr; e2 = expr -> mk loc (Apply (e1,e2)) |
[ LIDENT "flatten"; e = expr -> mk loc (Op ("flatten",[e])) |
| 50 |
|
| e1 = expr; e2 = expr -> mk loc (Apply (e1,e2)) |
| 51 |
] |
] |
| 52 |
|
|
| 53 |
| |
| |
| 54 |
[ e1 = expr; "+"; e2 = expr -> mk loc (Op ("+",[e1;e2])) ] |
[ e1 = expr; "+"; e2 = expr -> mk loc (Op ("+",[e1;e2])) |
| 55 |
|
| e1 = expr; "@"; e2 = expr -> mk loc (Op ("@",[e1;e2])) ] |
| 56 |
| |
| |
| 57 |
[ e1 = expr; "*"; e2 = expr -> mk loc (Op ("*",[e1;e2])) ] |
[ e1 = expr; "*"; e2 = expr -> mk loc (Op ("*",[e1;e2])) ] |
| 58 |
|
|