Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/03/2008, à 16:37

Fractal

Utiliser read_line() en Caml depuis Gedit

Bonjour smile

Je souhaiterais programmer en Caml light sous Ubuntu Gutsy.
J'ai installé le top-level Caml light en suivant la doc, et tout marche parfaitement, quand je lance "camllight camlgraph" dans la console l'interpréteur se lance et fonctionne très bien.
Maintenant le moins que l'on puisse dire est que ce n'est pas pratique de développer sur l'interpréteur par défaut, les flèches directionnelles ne sont même pas reconnues.
J'ai donc l'intention de me servir de Gedit pour faire mes programmes, Emacs étant encore un peu obscur pour moi.
La coloration syntaxique pour Ocaml est présente par défaut dans Gedit (bon, c'est pas Caml light, mais c'est mieux que rien quand même) et pour pouvoir compiler j'ai rajouté une commande externe en mettant comme commande "camllight camlgraph" et comme entrée le document actuel.
Bon, tout ça pour vous dire que jusque là ça marche à merveille, il y a juste une chose que je n'arrive pas à commander : l'interactivité.
Si je met un programme débile du genre

let a = 2;;
print_int (a + 1);;

tout marche très bien, mais si j'ai besoin de mettre

let a = read_int();;
print_int (a + 1);;

là plus rien ne marche, il me répond (avec du rouge un peu partout) :

>       Caml Light version 0.76
Toplevel input:

>print_int (a + 1);;<EOF>
#Uncaught exception: End_of_file
>           ^
##The value identifier a is unbound.

Accompli.

Est-ce que vous sauriez comment pouvoir se servir des commandes interactives de Caml depuis Gedit?

Merci d'avance smile

Fractal wink

Hors ligne

#2 Le 06/03/2008, à 13:22

Fractal

Re : Utiliser read_line() en Caml depuis Gedit

Personne n'a d'idée? sad

J'ai essayé de taper des trucs comme

let a = read_line();;
Bonjour

et quand je le compile depuis gedit il plante (toujours la même erreur) alors que quand je copie colle exactement ce que je viens d'écrire dans l'interpréteur Caml dans la console, il me répond sans problème

a : string = "Bonjour"

C'est étrange qu'un même programme marche dans un cas et pas dans l'autre, alors que j'ai précisément supprimé l'interactivité hmm

Merci de votre aide smile

Fractal wink

Hors ligne

#3 Le 20/03/2008, à 10:50

c_dog

Re : Utiliser read_line() en Caml depuis Gedit

Salut.

Chez moi, j'ai fait la même chose que toi pour pouvoir compiler, et tout marche très bien. Sauf quand je rentre les commandes qui te posent problème comme

let a = read_int();;
print_int (a + 1);;

En fait, je pense que ca ne vient pas de  gedit, mais plutot du fait que comme read_int() ou read_line() sont des commandes de type unit, il ne s'attend pas à ce que tu lui rentre une commande derrière (pour lui le programme est fini) et c'est pour ca qu'il te renvoie

Uncaught exception: End_of_file

J'espère que c'était tout bêtement ca ton problème, parce que sinon j'ai pas de solution à te proposer.

Dernière modification par c_dog (Le 04/04/2011, à 07:01)

Hors ligne

#4 Le 20/03/2008, à 11:15

Fractal

Re : Utiliser read_line() en Caml depuis Gedit

Oui, mais quand on les rentre dans la console, il attend quand même qu'on lui donne une valeur. Par exemple dans Emacs si je rentre ce programme il va me demander effectivement la valeur de l'entier puis me l'afficher (modulo quelques problèmes, mais l'idée est là) : la console dans Emacs est interactive.
En fait je pense que c'est surtout dû au fait que dans gedit l'appel à une commande de la console ne peut pas être interactif, il veut absolument nous renvoyer le résultat final de la console, mais nous interdit d'interagir avec au cours du déroulement du programme.

Fractal wink

Hors ligne