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 :

problème de compilation (Caml Light)


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut problème de compilation (Caml Light)
    J'ai un problème et je suis bloquée à cause de ce problème depuis un bon moment.
    C'est un problème de compilation. Dans mon programme, j'ai la trace
    qui permet de tracer les fonctions.

    trace "fonction";;

    ça marche bien en caml light, mais quand je compile ce programme en
    ligne de commande utilisant

    camlc -o fonction fonction.ml

    l'écran affiche trace is unbound.

    (En fait, sans trace, le programme est bien compilé. Mais j'ai besoin
    de mettre trace dans mon programme.)

    Pourriez-vous m'aider si vous avez une idée, s'il vous plaît?

    Je vous remercie d'avance.

    Cordialement,
    Olivia

  2. #2
    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
    trace n'est disponible qu'en mode interactif, trace n'est pas une fonction mais une commande qu'on entre dans l'interpréteur et qui n'est pas disponible en compilé.
    c'est un outil de déboggage qu'on utilise assez peu puisque le style Caml est plutôt déclaratif.
    à fortiori il n'y a aucun raison de tracer un programme déboggué.
    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.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Rebonjour,

    Merci beaucoup pour votre rèponse!
    Je vois enfin pourquoi ça n'a pas marché.

    Sinon, j'ai un dernière problème.
    Je crée un fichier .txt et enregistre le résultat dans ce fichier.
    Comme ci-dessous,
    ----------------------
    let sortie1FR2=open_out "sortie1FR2.txt";;
    output_value sortie1FR2 (analyse sentence1);;
    close_out sortie1FR2;;
    -----------------------
    Ensuit, j'obtiens le résultat comme ça,

    --------------------------------
    #analyse sentence1;;
    - : typed_mot * typed_mot =
    {Expression = "erreur"; Tree = Feuille "Erreur"; Type = erreur},
    {Expression = "((aime Marie) Jean)";
    Tree = Node (Node (Feuille "aime", Feuille "Marie"), Feuille "Jean");
    Type = S}
    -------------------------

    Il crée bien le fichier.txt et stocke le résultat, mais le problème est que
    dans ce fichier .txt, sauf tout ce qui est string, les autres sont tous cassés.
    J'ai alors essayé de changer le format de texte comme .rtf, .doc, même .pdf..etc..
    Mais c'est toujours le même problème.

    Vous voyez mon problème? Auriez-vous une idée?

    Je vous remercie beaucoup de me lire.

    Cordialement,
    Olivia

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    À priori, le résultat n'est pas "cassé", c'est juste qu'il est stocké dans un format binaire que tu ne peux pas lire comme ça. Si tu veux accéder à nouveau aux résultats, il faut les récupérer dans un programme caml (avec input_value, le contraire de output_value), et leur appliquer le traitement de ton choix.

    Si tu veux afficher tes données dans un format lisible par un humain, il faut que tu codes toi-même cette fonction d'affichage, Caml ne la devinera pas pour toi. Le truc c'est qu'ensuite si tu veux récupérer ces données dans un programme, il faudra que tu codes une fonction pour traduire le "format lisible dans un humain" en information lisibles par Caml, alors que maintenant tu n'as rien à faire de ce genre.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Merci pour votre réponse.
    Mais je suis enfin un peu désespérée.T.T


    J'ai copié et collé ce que j'ai eu dans le fichier sortie.txt
    -----------------------------------------------
    꽀┷ /  0 < " D `  ? erreur  l ?
    ((aime Marie) Jean)  x ? Erreur     ?
    Jean ? aime ? Marie 
    ---------------------------------------

    C'était normalement ce qu'on voit ci-dessous
    -------------------------------------
    {Expression = "((aime Marie) Jean)";
    Tree = Node (Node (Feuille "aime", Feuille "Marie"), Feuille "Jean");
    Type = S}
    -----------------------------------------

    Alors si j'ai bien compris votre message, je ne peux pas règler ce problème?

    S'il vous plaît!!T.T

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Je ne sais pas de quel "problème" tu parles. Ce que tu as fait est parfait si tu veux sauvegarder des données, pour les réutiliser plus tard dans un programme Caml. Si tu veux faire autre chose, il faut nous le dire : on ne peut pas deviner ce que tu essaies de faire.

    Qu'est-ce que tu essaies de faire ? Pourquoi as-tu besoin d'ouvrir le fichier sauvegardé ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    oops, désolée si j'étais pas assez claire...

    En fait, j'ai fait une interface en PHP et un analyseur morpho-syntaxique en caml light.
    Je fais fonctionner cet analyseur écrit en caml light à travers mon interface en PHP. ça marche bien les deux.
    Ensuite, j'imagine...il y a un utilisateur qui veux analyser une phrase quelconque comme jean aime marie.
    Il tape jean aime marie sur mon interface en php.
    Php stocke cette phrase dans un fichier texte qu'il crée.
    Puis, il appelle l'analyseur et l'analyseur en caml prend en entrée cette phrase stockée, l'analyse et stocke le résultat dans un fichier sortie.txt.
    Ensuite, php affiche le résultat stocké dans le fichier sortie.txt, sur écran à travers mon interface.

    Tout marche bien sauf que le résultat stocké soit cassé(?!) et par conséquent, sur écran, on voit le résultat cassé.

    Lorsque je teste cet analyseur dans l'interpréteur de caml light sans demander de stocker le résultat dans un fichier à part, il affiche bien le résultat dans l'interpréteur.
    ---------------------------------l'interpréteur de caml light--------
    analyse --> {Expression = "erreur"; Tree = Feuille "Erreur"; Type = erreur},
    {Expression = "((aime Marie) Jean)";
    Tree =
    Node (Node (Feuille "aime", Feuille "Marie"), Feuille "Jean");
    Type = S}
    ------------------------------------------------------
    Mais si je demande de stocker (au lieu d'afficher toute de suite dans l'interpréteur) le résultat avec la fonction suivante;

    let sortie1FR2=open_out "sortieFR2.txt";;
    output_value sortie1FR2 (analyse phrase);;
    close_out sortie1FR2;;

    ----------------------sortieFR2.txt-------------
    꽀┷ /   0 < " D `  ? erreur  l ?
    ((aime Marie) Jean)  x ? Erreur     ?
    Jean ? aime ? Marie 
    ---------------------------------------
    Comme on voit, il n'y a que des strings qui sont correctement stockés.
    Il n'affiche pas correctement Expression, Node, Feuille,Tree,Type (),,etc.

    Pour afficher le résultat à travers de mon interface php, j'ai besoin de stocker le résultat caml dans un fichier texte. Mais le problème est que le résultat n'est pas correctement stocké dans ce fichier sortieFR2.txt. ça doit être comme on voit dans le résultat du interpréteur caml.

    C'est trop long, désolèe,..mais j'espère que, au moins, c'est plus clair..

  8. #8
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour,

    c'est exactement ce que te dis bluestorm. Dans le toplevel, tu as tout ce que tu veux (Expression, Node, Feuille, Tree, Type) parce qu'il est pourvu, en interne, d'une fonction d'affichage valable avec n'importe quel type OCaml. Ceci n'est vrai que dans le toplevel (au même titre que trace !).

    Dès que tu es dans un programme, et que tu sauvegarde avec input_value, les données sont destinées à l'ordinateur et non à la lecture par un humain. Par conséquent, si tu veux retrouver le même style d'affichage que dans le toplevel, tu dois écrire toi-même la fonction de conversion en chaîne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val to_string : analyse -> string
    Cordialement,
    Cacophrène

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci de votre rèponse.
    Je vois enfin mon problème.!

    Cordialement,
    Olivia

Discussions similaires

  1. Problème avec caml-light
    Par kazuma dans le forum Caml
    Réponses: 4
    Dernier message: 27/05/2013, 01h08
  2. Problème! Erreur de compilation Caml.
    Par jocven dans le forum Caml
    Réponses: 6
    Dernier message: 09/01/2012, 00h19
  3. Problème d'Event avec Caml Light
    Par Soshius dans le forum Caml
    Réponses: 4
    Dernier message: 25/11/2009, 10h37
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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