anchor.diff:  
   and p_letbinding kw (pat, e) =
     let doc_pat = p_letlhs kw (pat, e) in
  -  let doc_expr = p_term false false e in
  +  let comm, doc_expr = p_term_sep false false e "$5" in
  +  let doc_expr =
  +    if comm = empty then
  +      group doc_expr
  +    else
  +      group <| ifflat (group (doc_expr ^^ break1 ^^ comm)) (comm ^^ hardline ^^ doc_expr)
  +  in
     ifflat (doc_pat ^/^ equals ^/^ doc_expr) (doc_pat ^^ space ^^ group (equals ^^ jump2 doc_expr))
   
   (* ****************************************************************************)
  
positive.code:        * semicolons. We forward our caller's [ps] parameter, though, because
         * something in [e2] may swallow. *)
        if is_unit e3
        then group ((str "if" ^/+^ p_noSeqTerm false false e1) ^/^ (str "then" ^/+^ p_noSeqTerm ps pb e2))
        else
             let e2_doc =
                match e2.tm with
                    (* Not protecting, since an ELSE follows. *)
                    | If (_,_,e3) when is_unit e3 ->
                        (* Dangling else *)
                        soft_parens_with_nesting (p_noSeqTerm false false e2)
                    | _ -> p_noSeqTerm false false e2
            in group (
                (str "if" ^/+^ p_noSeqTerm false false e1) ^/^
                (str "then" ^/+^ e2_doc) ^/^
                (str "else" ^/+^ p_noSeqTerm ps pb e3))
    | TryWith(e, branches) ->
        paren_if (ps || pb) (
          group (prefix2 (str "try") (p_noSeqTerm false false e) ^/^ str "with" ^/^
                separate_map_last hardline p_patternBranch branches))
    | Match (e, branches) ->
        paren_if (ps || pb) (
          group (surround 2 1 (str "match") (p_noSeqTerm false false e) (str "with") ^/^
          separate_map_last hardline p_patternBranch branches)
        )
    | LetOpen (uid, e) ->
  
negative.code:         | _ -> str "and"
        in
        let doc_pat = p_letlhs doc_let_or_and (pat, e) in
        let comm, doc_expr = p_term_sep false false e "" in
       let doc_expr =
         if comm = empty then
           group doc_expr
       else
           group <| ifflat (group (doc_expr ^^ break1 ^^ comm)) (comm ^^ hardline ^^ doc_expr)
       in
        attrs ^^
        (if is_last then
         surround 2 1 (flow break1 [doc_pat; equals]) doc_expr (str "in")
  