anchor.diff:                     let ls = left :: (List.replicate (n-1) sep)
                      align (cat (List.map2 (<<>>) ls ds) <<>> right)
   
  +    /// Treat a list of Docs as a tuple (d1,d2,...,dN)
       let tupled = encloseSep lparen rparen comma
   
  +    /// Treat a list of Docs as a list [d1,d2,...,dN]
       let mklist = encloseSep lbracket rbracket comma
   
  +    /// Treat a list of Docs as a semi-colon separated sequence between braces,
  +    /// such as {d1;d2;...;dN}
       let semiBraces = encloseSep lbrace rbrace semi
   
       let hang i d = align (nest i d)
  
positive.code: 
      let fillCat = fold (<//>)
  
      let enclose l r x = l <<>> x <<>> r
  
      let brackets = enclose lbracket rbracket
  
      let angles = enclose langle rangle
  
      let parens = enclose lparen rparen
  
      let braces = enclose lbrace rbrace
  
      let dquotes = enclose dquote dquote
  
      let squotes = enclose squote squote
  
      let nest i x = Nest (i,x)
  
negative.code: 
      let align d = column (fun k -> nesting (fun i -> nest (k-i) d))
  
      /// Enclose a list of Doc objects between a left and right Doc, and
      /// separate the list elements with the given separator Doc.
      let encloseSep left right sep ds =
          match ds with
          | []    -> left <<>> right
  