Bonjour,
j'utilise ocaml sous windows et quand j'écrispuis entrée puis le nb puis entrée il ne se passe rien, est ce que quelqu'un a déjà eu ce problème et aurais une réponse?Code:#let a = read_int();;
:merci:
Version imprimable
Bonjour,
j'utilise ocaml sous windows et quand j'écrispuis entrée puis le nb puis entrée il ne se passe rien, est ce que quelqu'un a déjà eu ce problème et aurais une réponse?Code:#let a = read_int();;
:merci:
bizarre, ça ne le fait pas sous la version unix :?
Code:
1
2
3
4 # let a = read_int ();; 2 val a : int = 2 #
et sous Mac aussi
Le problème vient probablement d'ailleurs — genre 12 pouces devant l'écranCode:
1
2
3
4
5 Objective Caml version 3.09.3 # let a = read_int ();; 2 val a : int = 2 #
Tu testes dans quel logiciel ? Il attend peut-être ";;" avant d'envoyer la valeur au mode interactif ? (il me semble que le mode tuareg le fait)
Je viens d'essayer avec emacs + tuareg (linux) que je ne maîtrise pas encore totalement, dans le toplevel :
le toplevel attend une valeur, je tape 2 puis "entrée", emacs rajoute ";;" et la fonction read_int plante avecCode:let a = read_int();;
euh... on fait comment dans ce cas .... 8O8O8O8O8OCode:Failure : "int_of_string"
Je viens d'essayer avec le mode tuareg, ça marche si on entre la valeur dans le "caml-toplevel". Les points-virgules ne sont ajoutés qu'avec les fonctions de type tuareg-eval- (C-c C-e et les autres).
En général, je préfère passer les valeurs en argument aux fonctions, plutôt que de faire un read_. Je trouve ça plus pratique avec le mode interactif.
Je crois que c'est un problème qui concerne la boucle interactive sous windows,c'est quand même vachement handicapant de ne pas pouvoir faire une entée sortie, ça ne marche pas non plus avec les ;; apres le nb,alors...
pardon c'est quoi le mode tuareg et le caml-toplevel?Merci d'avance...
@gilou
La lecture en entrée ne fonctionne pas dans l'interface OCamlWin(Plus).
Tu dois ouvrir un CMD.EXE puis lancer ocaml et là ça fonctionne:
@james-miCode:
1
2
3
4
5
6
7 >ocaml Objective Caml version 3.09.3 # let a = read_int();; 2 val a : int = 2 #
Ben pareil, avec rxvt au lieu de cmd.exe.
C'est la voie de la sagesse.Citation:
Envoyé par LLB
Merci beaucoup Spiceguid, ça fonctionne...
chez moi c'est activé d'office. Y a-t-il un moyen de le désactiver? pour éviter les ";;" après l'entier, qui me conduisent à un "Exception: Failure "int_of_string" ?
moi aussi, mais ça peut être utile à l'occasion, et je n'arrive pas à le faire fonctionner ...
@spiceguid : je ne connais pas rxvt, j'utilise parfois ocaml dans le terminal gnome - read_int() n'y pose pas de pb.
Bonjour :)
J'ai déjà eu le même problème (rajout des ;; sous Emacs ce qui fait planter read_int) et pour le contourner j'ai trouvé la parade suivante (c'est un peu beaucoup du bricolage), j'ai rajouté au début de mon programme le codequi se charge de redéfinir la fonction read_int en enlevant les éventuels points-virgules à la fin du nombre entré par l'utilisateur.Code:
1
2 let read_int () = (* Nouvelle fonction read_int pour régler les problèmes de compatibilité avec Emacs *) let str = read_line() in int_of_string (if str.[(String.length str) - 1] = ';' then String.sub str 0 (String.length str - 2) else str)
C'est pas super joli, mais ça marche :)
Fractal ;)
merci pour l'astuce...s'il n'y a rien de mieux c'est ce que je vais faire ...:lol:
Sous Windows, en utilisant OcamlWinPlus, j'ai le même problème que toi.
Par contre, pas en utilisant le toplevel ocaml. Ouvre une invite de commandes, tapePuis ressaisi ta ligneCode:C:\>ocaml
Ton nombreCode:# let a = read_int();;
Et ça fonctionnera.Code:2
Code:
1
2
3
4
5
6 Objective Caml version 3.11.0 # let a = read_int();; 2 val a : int = 2 #
J'ai affecté la commande comint-send-input à une touche (f10 par exemple)
Dans le fichier d'initialisation de Emacs ( le mien est .emacs.d/init.el) j'ai écrit :
(global-set_key [f10] 'comint-send-input) puis sauvé le fichier (C-x C-s)
J'utilise la touche f10 au lieu de <RET>.
Voir le lien http://www.gnu.org/software/emacs/ma...Init-Rebinding
Remarque : dans Emacs read_int() marche dans inferior-caml mais pas dans caml-toplevel.
Elle marche aussi dans un terminal mais pas dans la boucle d'interaction de ocaml (sous Windows).
Bonjour,
je débute en caml et utilise WinCaml5 sous Windows vista j'ai le même problème avec read_int
le fait d'utiliser Ocaml dans une fenêtre cmd permet de contourner le problème
n'y a t'il pas d'autres solution que de mettre la réponse en argument du menu ?
Cordialement,
G. Pêche
Malheureusement non. On ne peut pas contourner les nombreux problèmes de la console WinCaml tout en persistant à l'utiliser.