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 :

[Caml Light] Librairie 'graphics" et Linux


Sujet :

Caml

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [Caml Light] Librairie 'graphics" et Linux
    Bonjour.
    Utilisateur caml (avec l option info de math sup) mais aussi et surtout de linux (ubuntu breezy badger en l occurence) je ne parviens pas a utiliser la librairie "graphics" utilisée sous windows. J ai bien essayé de la recompiler sous linux mais rien a faire.
    Quelqu un a t il la solution ?
    D avance merci.

    Paf le chiot

    edit: j ai résolu mon problème en installant camlgraph, mais maintenant quand je lance mes programmes j ai droit a :
    Uncaught exception: Graphic_failure "Cannot open display 600x800"

    Une idée ??

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Si je me souviens bien, il faut ajouter un espace avant la taille de la fenêtre dans la chaîne de caractères que tu passes en argument, comme spécifié dans le manuel de référence d'Objective Caml (mais c'est pareil en Caml Light) : c'est une source d'erreur classique (je la connais bien celle-là !).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open_graph " 300x100+50-0";
    Si ce n'est pas ça, il serait bon de voir ton code. Je ne pense pas qu'il s'agisse d'un problème de mauvaise compilation du module Graphics : normalement tout système sous X11 devrait la supporter. Réessaye avec la distribution binaire.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour la rapidité de la réponse !
    Alors maintenant j ai un probleme assez étrange, j obtiens le messaged erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ##open "graphics";;
    #open_graph " 600x800";;
    The global value graphics__open_graph is referenced before being defined.
    Please load an implementation of module graphics first.
    Je comprends pas. J ai lu sur le net qu on contourne le probleme en compliant les programmes avec le compilateur camlc mais j aimerais bien résoudre le probleme (pour pas rester sur un echec).
    Sinon ou trouves tu le manuel caml light (ou ocaml) parceque si je me souviens bien sous windows il est dans caml light mais la ?? Je vais chercher.

    Paf le chiot.

    edit: j ai testé la compilation et cela me renvoie la même erreur.
    Une idée ?
    edit2: je viens de me rendre compte de ma petite erreur je suis sous dapper et non pas breezy. Enfin bon ca change pas grand chose là...

  4. #4
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Ce message dit très clairement que tu n'as pas chargé le code-octet du module Graphics dans la machine virtuelle : en gros, il ne connaît pas la fonction.

    En Objective Caml, on écrirait ceci dans l'interpréteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [ InOCamlWeTrust @ Sahara ]$ ocaml
            Objective Caml version 3.09.2
     
    # #load "graphics.cma";;
    # open Graphics;;
    # open_graph " 600x800";;
    - : unit = ()
    # close_graph;;
    - : unit -> unit = <fun>
    # close_graph ();;
    - : unit = ()
    # #quit;;
    [ InOCamlWeTrust @ Sahara ]$ exit
    Je ne me souviens plus très bien comment on fait en Caml LIght pour charger du code-octet... utilise Objective Caml, ça bugue pas et puis Caml Light n'est plus maintenu depuis 2002 !

    La documentation de Caml Light est ici :

    http://caml.inria.fr/pub/docs/manual-caml-light/

    et celle d'Objective Caml ici :

    http://caml.inria.fr/pub/docs/manual-ocaml/index.html

    Peut-être que faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # load_object "graphics";;
    # #open "graphics";;
    ... t'aidera.

  5. #5
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    La documentation de Caml Light dit ceci :

    Citation Envoyé par Caml Light
    Common errors

    This section describes and explains the most frequently encountered error messages.

    (...)

    mod__name is referenced before being defined
    You have neglected to load in memory an implementation for a module, with load or load_object. This is explained in full detail in section 6.3 above.
    ... et la section 6.3 dit :

    Citation Envoyé par Caml Light
    However, before referencing a global variable from a module other than the top module, a definition of that global variable must have been entered in memory. At start-up, the toplevel system contains the definitions for all the identifiers in the standard library. The definitions for user modules can be entered with the load (pour des modules non encore compilés présents dans des fichiers .ml) or load_object (pour des modules déjà compilés) functions described above. Referencing a global variable for which no definition has been provided by load or load_object results in the error ``Identifier foo__bar is referenced before being defined''.

  6. #6
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par paf le chiot
    Je comprends pas. J ai lu sur le net qu on contourne le probleme en compliant les programmes avec le compilateur camlc
    Pas clair... faut tout de même faire gaffe avec ce que l'on trouve parfois sur internet.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je ne me souviens plus très bien comment on fait en Caml LIght pour charger du code-octet... utilise Objective Caml, ça bugue pas et puis Caml Light n'est plus maintenu depuis 2002 !
    Arf... pourquoi on apprend caml light alors ?
    C est quoi la différence avec Ocaml ? j ai vu après l avoir installé que des fonctions comme "hd" ou "tl" marchent pas sur Ocaml ?

    Sinon j ai essayé ce que tu m as dit et là j avoue que la réponse me dépasse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #load_object "graphics";;
    The C primitive "gr_sigio_handler" is not available.
    C est qui "gr_sigio_handler" ?
    J ai bien compris ce que dit le manuel mais je vois pas comment résoudre ca puisque cette fonction "gr_sigio_handler" ne semble pas disponible (veut pas venir ??) ?
    Encore merci.

    Paf le chiot.

  8. #8
    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 681
    Points
    18 681
    Par défaut
    Citation Envoyé par paf le chiot
    Arf... pourquoi on apprend caml light alors ?
    C est quoi la différence avec Ocaml ? j ai vu après l avoir installé que des fonctions comme "hd" ou "tl" marchent pas sur Ocaml ?

    parce que les profs de prépa ont rarement le niveau de faire mieux

    OCaml est mieux... c'est tout
    un peu d'histoire http://gorgonite.developpez.com/tuto...entation/#LI-3


    les fonctions que tu cherches sont dans le module List
    http://caml.inria.fr/pub/docs/manual...bref/List.html

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour les liens je vois la différence (pas violente non plus a mon niveau, a part de caml light est plus en développement).
    Mais j ai du mal a me résigner a utiliser ocaml puisque ce n est pas ce que l on me demande ...

    Paf le chiot.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Rectification !!
    Jeviens de reessayer ca marche (youhou !!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    paf@paf-laptop:~$ camllight camlgraph
    >       Caml Light version 0.76
     
    #load_object "graphics";;
    - : unit = ()
    ##open "graphics";;
    #open_graph " 600x800";;
    - : unit = ()
    ouvre bien la fenetre. Par contre mon code pour tracer une courbe de von koch par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #open "graphics";;
    open_graph " 800x600";;
     
    let iof x= int_of_float x;;
    let foi x= float_of_int x;;
     
    (*défintion du type complexe pour faciliter les rotations*)
     
    type complexe={R:float; I:float};;
    let add z1 z2 = {R=z1.R +. z2.R ; I=z1.I +. z2.I};;
    let mult z1 z2 = {R=z1.R *. z2.R -. z1.I*.z2.I; I=z1.I *. z2.R +. z2.I*.z1.R};;
    let sous z1 z2 = {R=z1.R -. z2.R ; I=z1.I -. z2.I};;
    let mult_r z x = {R=z.R *. x; I=z.I *. x};;
    let div_r z x = {R=z.R /. x; I=z.I /. x};;
     
    (*fonction annexe de calcul du sommet du triangle central*)
    let calcul_sommet x1 y1 x2 y2=
    let depart = {R= foi x1; I=foi y1} in
    let arrivee = {R= foi x2; I=foi y2} in
      let rotation={R=0.5;I=sqrt(3.)/.2.} in
      let sommet= add depart (mult rotation (sous arrivee depart)) in
    (sommet.R,sommet.I);;
     
    let rec von_koch  x1 y1 x2 y2 n=match n with
    |1->moveto x1 y1;
       lineto x2 y2; (*cas final <=> niveau=1 *)
    |_->(*on passe aux complexes*)
     
    let z1 ={R= foi x1;I=foi y1} and z2 ={R= foi x2;I=foi y2} in 
    let zA=div_r (add (mult_r z1 2.) z2) 3. in
    let zB=div_r (add (mult_r z2 2.) z1) 3. in
    let (xs,ys)=calcul_sommet (iof zA.R) (iof zA.I) (iof zB.R) (iof zB.I) in
     
    (*on appel la fonction entre les quatre points créés*)
     
    von_koch x1 y1 (iof zA.R) (iof zA.I) (n-1);
    von_koch (iof zA.R) (iof zA.I) (iof xs) (iof ys) (n-1);
    von_koch (iof xs) (iof ys) (iof zB.R) (iof zB.I) (n-1);
    von_koch (iof zB.R) (iof zB.I) x2 y2 (n-1);;
    clear_graph();;
    von_koch 20 20 500 20 4;;
    renvoie une fenetre vide et fonctionnait très bien sous windows.iot.
    Une idée ?

    Paf le chiot

    PS: merci beaucoup pour votre aide, j aime comprendre

  11. #11
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Cela fait longtemps que je n'ai pas utilisé cette librairie, mais je crois bien que tu dois faire appel à la méthode synchronize du module Graphics.

    Pour ce qui est du type complexe, il est déjà défini, en Objective Caml, dans le module Complex de la librairie standard.

    Désolé pour le retard de la réponse.

    Fais-moi savoir.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour.
    Tout d abord merci beaucoups pour toutes vos réponses. En fait j ai résolu le probleme en envoyant mes foncions les unes après les autres, parceque caml light avait un peu de mal avec le copiez-collé direct.
    Encore merci et longue vie a caml, qu il soit léger ou Objectif

    Paf le chiot.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Librairie graphique et CAML light
    Par lovecpp dans le forum Caml
    Réponses: 6
    Dernier message: 10/02/2009, 16h23
  2. programmation en caml light
    Par sicav dans le forum Caml
    Réponses: 36
    Dernier message: 20/04/2007, 22h27
  3. [Caml Light] Nombre de bits
    Par Nilss dans le forum Caml
    Réponses: 4
    Dernier message: 23/03/2007, 20h32
  4. Typage Caml light (je suis totalement perdu!)
    Par ficarre dans le forum Caml
    Réponses: 11
    Dernier message: 24/02/2007, 14h42
  5. Réponses: 3
    Dernier message: 07/12/2006, 10h15

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