259 |
259 |
260 fun brackify fxy_ctxt = |
260 fun brackify fxy_ctxt = |
261 gen_brackify (fixity BR fxy_ctxt) o Pretty.breaks; |
261 gen_brackify (fixity BR fxy_ctxt) o Pretty.breaks; |
262 |
262 |
263 fun brackify_infix infx fxy_ctxt (l, m, r) = |
263 fun brackify_infix infx fxy_ctxt (l, m, r) = |
264 (if fixity (INFX infx) fxy_ctxt then enclose "(" ")" else Pretty.block) |
264 gen_brackify (fixity (INFX infx) fxy_ctxt) [l, str " ", m, Pretty.brk 1, r]; |
265 ([l, str " ", m, Pretty.brk 1, r]); |
|
266 |
265 |
267 fun brackify_block fxy_ctxt p1 ps p2 = |
266 fun brackify_block fxy_ctxt p1 ps p2 = |
268 let val p = Pretty.block_enclose (p1, p2) ps |
267 let val p = Pretty.block_enclose (p1, p2) ps |
269 in if fixity BR fxy_ctxt |
268 in if fixity BR fxy_ctxt |
270 then enclose "(" ")" [p] |
269 then enclose "(" ")" [p] |
271 else p |
270 else p |
272 end; |
271 end; |
273 |
272 |
274 fun gen_applify strict opn cls f fxy_ctxt p [] = |
273 fun gen_applify strict opn cls f fxy_ctxt p [] = |
275 if strict |
274 if strict |
276 then (if fixity BR fxy_ctxt then enclose "(" ")" else Pretty.block) [p, str "()"] |
275 then gen_brackify (fixity BR fxy_ctxt) [p, str "()"] |
277 else p |
276 else p |
278 | gen_applify strict opn cls f fxy_ctxt p ps = |
277 | gen_applify strict opn cls f fxy_ctxt p ps = |
279 (if fixity BR fxy_ctxt then enclose "(" ")" else Pretty.block) |
278 gen_brackify (fixity BR fxy_ctxt) (p @@ enum "," opn cls (map f ps)); |
280 (p @@ enum "," opn cls (map f ps)); |
|
281 |
279 |
282 fun applify opn = gen_applify false opn; |
280 fun applify opn = gen_applify false opn; |
283 |
281 |
284 fun tuplify _ _ [] = NONE |
282 fun tuplify _ _ [] = NONE |
285 | tuplify print fxy [x] = SOME (print fxy x) |
283 | tuplify print fxy [x] = SOME (print fxy x) |