IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

read_int avec ocaml


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut read_int avec ocaml
    Bonjour,

    j'utilise ocaml sous windows et quand j'écris puis 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?



  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    bizarre, ça ne le fait pas sous la version unix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # let a = read_int ();; 
    2
    val a : int = 2
    #
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    et sous Mac aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Objective Caml version 3.09.3
    # let a = read_int ();; 
    2
    val a : int = 2
    #
    Le problème vient probablement d'ailleurs — genre 12 pouces devant l'écran

  4. #4
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    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)

  5. #5
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par LLB Voir le message
    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 avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Failure : "int_of_string"
    euh... on fait comment dans ce cas ....

  6. #6
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    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.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    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...

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    pardon c'est quoi le mode tuareg et le caml-toplevel?Merci d'avance...

  9. #9
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    @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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >ocaml
            Objective Caml version 3.09.3
     
    # let a = read_int();;
    2
    val a : int = 2
    #
    @james-mi

    Ben pareil, avec rxvt au lieu de cmd.exe.

    Citation Envoyé par LLB
    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.
    C'est la voie de la sagesse.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Merci ça marche
    Merci beaucoup Spiceguid, ça fonctionne...

  11. #11
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par LLB Voir le message
    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).
    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" ?

    Citation Envoyé par LLB Voir le message
    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.
    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.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 75
    Points : 34
    Points
    34
    Par défaut
    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 code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    qui se charge de redéfinir la fonction read_int en enlevant les éventuels points-virgules à la fin du nombre entré par l'utilisateur.
    C'est pas super joli, mais ça marche

    Fractal

  13. #13
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    merci pour l'astuce...s'il n'y a rien de mieux c'est ce que je vais faire ...

  14. #14
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par james-mi Voir le message
    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" ?
    Je viens de regarder le code Lisp. Il suffit d'appeler la fonction comint-send input pour envoyer l'entrée au mode interactif, sans attendre ";;". Par chance, il y a déjà un raccourci pour cette fonction : il s'agit de M-entrée.

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par LLB Voir le message
    Je viens de regarder le code Lisp. Il suffit d'appeler la fonction comint-send input pour envoyer l'entrée au mode interactif, sans attendre ";;". Par chance, il y a déjà un raccourci pour cette fonction : il s'agit de M-entrée.

  16. #16
    Invité
    Invité(e)
    Par défaut
    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, tape Puis ressaisi ta ligne
    Ton nombre
    Et ça fonctionnera.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Objective Caml version 3.11.0
     
    # let a = read_int();;
    2
    val a : int = 2
    #
    Dernière modification par Invité ; 09/01/2009 à 13h31.

  17. #17
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 4
    Points
    4
    Par défaut une solution
    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).

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Read_int avec wincaml 5
    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

  19. #19
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Malheureusement non. On ne peut pas contourner les nombreux problèmes de la console WinCaml tout en persistant à l'utiliser.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2011, 02h28
  2. Probleme d'installation avec ocaml
    Par Vermiceau dans le forum Caml
    Réponses: 7
    Dernier message: 17/10/2009, 17h21
  3. [Ocaml] Compilation d'un executable windows avec Ocaml
    Par Diegoooowwww dans le forum Caml
    Réponses: 19
    Dernier message: 02/03/2009, 13h21
  4. Dialoguer avec ocaml ?
    Par Untitled dans le forum Caml
    Réponses: 3
    Dernier message: 10/11/2008, 00h35
  5. read_line avec ocaml + Sdl
    Par ralph_the_wonderlama dans le forum Caml
    Réponses: 0
    Dernier message: 12/04/2008, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo