anchor.diff:  
   open PPrint
   
  -type Foo = Foo of Foo: int * Bar: bool * Baz: ref<unit>
  +[<EntryPoint>]
  +let main _ =
  +  let inline (^) x = x
   
  -type FoBaBaz = {Foo: int; Bar: bool; Baz: ref<unit>}
  -
  -type Fuu = {Fuu: bool}
  -type Bar = Bar of int * float
  -         | Baz
  -         | Fuu of Fuu
  -
  -[<EntryPoint>]
  -let main args =
     let result = ref 0
   
     let chk limit doc expected =
  
positive.code:   vsep [txt "a"; txt "b"; txt "c"] === "a\nb\nc"
    hcat [txt "a"; txt "b"; txt "c"] === "abc"
  
    width (txt "foo") (fun n -> 
     nest (n+1)
      (parens
        (vsep
          (punctuate comma
            [txt "bar"; txt "baz"; txt "foobar"])))) ===
    "foo(bar,\n    baz,\n    foobar)"
  
    txt "foo" <^>
    parens (align (vsep (punctuate comma [txt "bar"; txt "baz"; txt "foobar"])))
    === "foo(bar,\n    baz,\n    foobar)"
  
    printfn "Done!"
  
negative.code:   chr 'x' === "x"
    txt "example" === "example"
    fmt "%d" 101 === "101"
    nest 1 ^ parens ^ vsep ^ punctuate comma [txt "x"; txt "y"; txt "z"] ===
      "(x,\n y,\n z)"
    enclose (txt "(* ", line <^> txt " *)")
      ^ nestBy " * " ^ vsep [txt "a"; txt "b"; txt "c"] ===
      "(* a\n * b\n * c\n *)"
    nest 2 ^ hcat [txt "a"; line; txt "b"] === "a\n  b"
    group ^ nest 2 ^ hcat [txt "a"; line; txt "b"] === "a b"
    nest 2 ^ hcat [txt "a"; linebreak; txt "b"] === "a\n  b"
    group ^ nest 2 ^ hcat [txt "a"; linebreak; txt "b"] === "ab"
    txt "a" <.> txt "b" === "a\nb"
    txt "a" <.> txt "b" |> group === "a b"
  
    let wide = txt "\\\"a\\nb\\nc\\\""
    let narrow = vsep [txt "\"a\\n\""; txt "\"b\\n\""; txt "\"c\""]
  