Hi Ivan, Thanks for your feedback. # print_int 2+2;; I don't like the idea of testing whether the term would type-check with a different parenthesization. First of all, it might be expensive or complex to test. Second, it may lead to suggestions that are even more confusing. One proposal that I would like better to handle your scenario is the following: if an infix binary operator (other than ';') has a first argument of type unit, then suggest that parentheses might be missing. I can try to implement that, unless someone argues against this proposal. Thanks, + Arthur > Impressive! > > By the way, one of the most common mistakes is to forget that a > function application binds tighter than > infix operators, e.g., > > > # print_int 2+2;; > > Although your branch already provides a nice error message: > > Error: The function `+' cannot be applied to the arguments provided. > > | Types of the expected arguments: | Types of the provided > arguments: > ---|-------------------------------------|------------------------------------ > 1 | int | unit > 2 | int | int > > > that is probably better than the default: > > Error: This expression has type unit but an expression was > expected of type > int > > it is still probably a good idea, to provide an ad-hoc error message > here (as you did for missing `()`, `!` and `rec`). > > In this case, if an offending expression contains a binary operator > which has an application to the left and some simpl_expr > on the right, and if we can fix it by parenthesizing the expression, > then we can suggest adding parentheses around the expression. > > Regards, > Ivan Gotovchits > > On Thu, Jan 12, 2017 at 4:37 PM, SP > wrote: > > Nice! > > -- > SP > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > >