Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

message d'erreur douteux #3032

Closed
vicuna opened this issue Nov 15, 2001 · 3 comments
Closed

message d'erreur douteux #3032

vicuna opened this issue Nov 15, 2001 · 3 comments
Labels

Comments

@vicuna
Copy link

vicuna commented Nov 15, 2001

Original bug ID: 633
Reporter: administrator
Status: closed
Resolution: fixed
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)

Bug description

Ça se produit en 3.00 et en 3.03-alpha:

Array.iter;;

  • : f:('a -> unit) -> 'a array -> unit =

Array.iter Sys.argv (fun arg -> print_string (arg ^ " "));;

		 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This function expects too many arguments
Ouch! Je suis étonné, vu la qualité et la précision habituelles des
messages d'erreurs, qu'Ocaml ne me signale pas que cette fun devrait
être un 'a array, ou Sys.argv une fun, comme (me souffle perfidement
Pierre :-) camllight:

  Caml Light version 0.74

#do_list [| |] (fun arg -> print_string (arg ^ " "));;
Toplevel input:

do_list [| |] (fun arg -> print_string (arg ^ " "));;
^^^^^
This expression has type 'a vect,
but is used with type 'b -> unit.

Bon, j'ai trouvé mon erreur quand même, finalement. Mais plus d'un
débutant serait troublé.

Bruno.

@vicuna
Copy link
Author

vicuna commented Nov 16, 2001

Comment author: administrator

Ça se produit en 3.00 et en 3.03-alpha:

Array.iter;;

  • : f:('a -> unit) -> 'a array -> unit =

Array.iter Sys.argv (fun arg -> print_string (arg ^ " "));;

  	 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This function expects too many arguments
Ouch! Je suis étonné, vu la qualité et la précision habituelles des
messages d'erreurs, qu'Ocaml ne me signale pas que cette fun devrait
être un 'a array, ou Sys.argv une fun, comme (me souffle perfidement
Pierre :-) camllight:

Effectivement, ce message est assez peu intuitif.
Sans remettre les types, qui peuvent etre assez gros avec des fonctions,
j'ai corrige' l'ordre du typeur, et j'ai mis un message d'erreur plus
raisonnable
quand on n'attend pas une fonction.

    Objective Caml version 3.03 ALPHA+4 (2001-11-16)

Array.iter Sys.argv (fun arg -> print_string (arg ^ " "));;

         ^^^^^^^^

This expression has type string array but is here used with type 'a -> unit

Array.init (fun x -> 2*x) 3;;

          ^^^^^^^^^^^^

This expression should not be a function

Array.iter (fun x y -> x + y);;

                ^^^^^^^^^^

This function expects too many arguments

On pourrait aussi vouloir afficher le type de la non-fonction, qu'en
pensez-vous?

Jacques Garrigue

@vicuna
Copy link
Author

vicuna commented Nov 16, 2001

Comment author: administrator

Change error message according to context (JG, 2001-11-16)

@vicuna vicuna closed this as completed Nov 16, 2001
@vicuna
Copy link
Author

vicuna commented Nov 16, 2001

Comment author: administrator

Ça se produit en 3.00 et en 3.03-alpha:

Array.iter;;

  • : f:('a -> unit) -> 'a array -> unit =

Array.iter Sys.argv (fun arg -> print_string (arg ^ " "));;

		 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This function expects too many arguments
Ouch! Je suis étonné, vu la qualité et la précision habituelles des
messages d'erreurs, qu'Ocaml ne me signale pas que cette fun devrait
être un 'a array, ou Sys.argv une fun, comme (me souffle perfidement
Pierre :-) camllight:

Effectivement, ce message est assez peu intuitif.
Sans remettre les types, qui peuvent etre assez gros avec des fonctions,
j'ai corrige' l'ordre du typeur, et j'ai mis un message d'erreur plus
raisonnable
quand on n'attend pas une fonction.

    Objective Caml version 3.03 ALPHA+4 (2001-11-16)

Array.iter Sys.argv (fun arg -> print_string (arg ^ " "));;

         ^^^^^^^^

This expression has type string array but is here used with type 'a -> unit

Array.init (fun x -> 2*x) 3;;

          ^^^^^^^^^^^^

This expression should not be a function
[...]

Pourquoi ne pas afficher le type attendu pour cette expression, puis
indiquer ``hencer this expression should not be a function'' ?

Cordialement,

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/

@vicuna vicuna added the bug label Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant