let is_infix =
              let first_chars =
                [ '='; '<'; '>'; '|'; '&'; '$'; '@'; '^'; '+'; '-'; '*'; '/';
                  '%'; '\\' ]
              and infixes =
                List.fold_right StringSet.add infix_lidents StringSet.empty
              in
                fun s ->
                  (StringSet.mem s infixes) ||
                    ((s <> "") && (List.mem s.[0] first_chars))