anchor.diff:          failwith (err ^ " expected")
   
   let rec listof prs sep err =
  -    prs .>>. many (sep .>>. fix err prs |>> snd) |>> (fun (h, t) -> h :: t)
  +    prs .>>. many (sep .>>. (fix err prs) |>> snd) |>> (fun (h, t) -> h :: t)
   
   let nothing input = [], input
   
   let elistof prs sep err =
  -    listof prs sep err <|> nothing;;
  +    listof prs sep err <|> nothing
   
   let leftbin prs sep cons err =
       prs .>>. many (sep .>>. fix err prs) |>>
       (fun (x,opxs) ->
           let ops, xs = unzip opxs
  -        itlist2 (fun op y x -> cons op x y) (rev ops) (rev xs) x);;
  +        itlist2 (fun op y x -> cons op x y) (rev ops) (rev xs) x)
   
   let rightbin prs sep cons err =
       prs .>>. many (sep .>>. fix err prs) |>>
  
positive.code:   let rec pfrees ptm acc =
      match ptm with
        Varp(v,pty) ->
          if v = "" & pty = dpty then acc
          elif can get_const_type v || can num_of_string v || exists (fun (w,_) -> v = w) (!the_interface) then acc
          else insert ptm acc
      | Constp(_,_) -> acc
  
negative.code:       (Ident s)::rest ->
          if (try get_type_arity s > 0 with Failure _ -> false) then s,rest
          else raise Noparse
      | _ -> raise Noparse
  
    let rec pretype i = rightbin sumtype (a (Resword "->")) (btyop "fun") "type" i
    and sumtype i = rightbin prodtype (a (Ident "+")) (btyop "sum") "type" i
  