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 :

Compiler en mode "light", sans objets etc.


Sujet :

Caml

  1. #1
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut Compiler en mode "light", sans objets etc.
    Bonjour,

    dans divers documents je trouve des trucs du style:

    malheureusement mon compilateur ocaml m'empêche de déclarer des expressions commençant par une majuscule... Avec l'erreur "unbound constructor"

    Y'a-t-il des solutions à ça, compiler sans le "o" de "ocaml"?

    Merci

  2. #2
    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
    Citation Envoyé par coyotte507 Voir le message
    Bonjour,

    dans divers documents je trouve des trucs du style:

    malheureusement mon compilateur ocaml m'empêche de déclarer des expressions commençant par une majuscule... Avec l'erreur "unbound constructor"

    Y'a-t-il des solutions à ça, compiler sans le "o" de "ocaml"?

    Merci
    C'est quoi ces documents qui disent ça pour ocaml ? Qu'on les montre du doigt et qu'on dise de les éviter ?

    Sinon ce que tu veux c'est peut-être utiliser camllight c'est ça ?

    Conseil : change tes exemples et fait du ocaml.

  3. #3
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Ah d'accord, non ce n'est pas du ocaml les documents, c'est du caml tout court.
    Je dois donc télécharger caml light en plus d'ocaml?

  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
    Non : fuis comme la peste Caml Light. Si tu as une telle erreur, c'est que tu dois très certainement utiliser OCaml.

    La seule chose que tu ne dois pas faire, c'est utiliser des identificateurs commençant par une majuscule. Seuls les constructeurs de type peuvent commencer par une majuscule, contrairement à Caml Light avec lequel tu peux déclarer des constructeurs ne commençant pas par une majuscule.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #5
    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 Chercher-remplacer
    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.

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    J'ai pas bien compris Coyotte... toi enfait c'que tu veux c'est télécharger caml light pour coller au tutoriel que tu es en train de lire? Désolé je ne dis pas ça comme une insulte mais je trouve ça débile. Si c'est OCaml qui t'interesse alors change de tuto pour un vrai tuto OCaml, ou alors si tu veux programmer en Caml light alors continu sur ce tuto. Mais c'est le choix du langage qui devrait déterminer le tuto, pas l'inverse (enfin... à mon humble avis)

  7. #7
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Bah en fait à l'épreuve d'informatique c'est caml tout court pas ocaml...

    Je pensais pas au début qu'il y avait des incompatibilités, donc j'ai pris ocaml pour "tout avoir" (et donc apprendre en même temps la version évoluée), mais apparemment il faut que je télécharge caml light d'après vos réponses

    Si vous voulez avoir plus de détail (quoi? Ton prof ne t'as dit de télécharger caml light? c'est quoi cette épreuve débile où on fait du ocaml au lieu de caml light?), je suis en classe prépa dans un lycée où il n'y a pas l'option informatique, et ceux qui font option informatique dans les autres lycées n'ont que deux heures par semaines pendant un an, ce qui explique pourquoi aux concours c'est caml et pas ocaml...

    Et donc ça explique pourquoi il vaut mieux que je travaille avec caml qu' ocaml

    Merci de votre aide.

  8. #8
    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
    Pourquoi demandes-tu conseil si tu as déjà la réponse ?
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  9. #9
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Don't worry, be happy

    Ne vous inquiétez pas pour moi svp.

  10. #10
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 64
    Points
    64
    Par défaut
    mdr, InOCamlWeTrust il a l'air venèr! Faut pas être violent comme ça, si il veut faire du Caml Light c'est son droit.

  11. #11
    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
    Citation Envoyé par nonpoluant Voir le message
    mdr, InOCamlWeTrust il a l'air venèr! Faut pas être violent comme ça, si il veut faire du Caml Light c'est son droit.

    sincèrement, vu le niveau moyen des épreuves d'informatique, le fait d'avoir fait de l'OCaml ou du camllight ne changera rien... si ce n'est que les tutos ocaml sont bien plus faciles à trouver (et je crois que c'est un aspect non négligeable pour un autodidacte )


    évidemment si tu n'as jamais l'intention de retoucher à caml par la suite, ce n'est pas grave... en revanche, si ce n'est pas le cas, mieux aurait valu que tu prennes OCaml
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  12. #12
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Oui je pense que je vais garder ocaml, mais télécharger caml light en plus pour voir ce que l'on n'a pas le droit de faire (string_nth <=> .[] ???)

    Merci

    Edit: en plus l'interpréteur caml light il est beaucoup plus bô

  13. #13
    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 coyotte507 Voir le message
    Oui je pense que je vais garder ocaml, mais télécharger caml light en plus pour voir ce que l'on n'a pas le droit de faire (string_nth <=> .[] ???)
    On peut accéder à n'importe quel élément d'une chaîne de caractères via .[], que ce soit en OCaml ou Caml Light.

    Les principales différences sont :

    - le type 'a array de OCaml pour les vecteurs est 'a vect en Caml Light

    - il est impossible de déclarer une valeur commençant par une majuscule en OCaml ; les identificateurs commençant par une majuscule sont strictement réservés pour les constructeurs de type et les noms de modules, contrairement à Caml Light.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    (* OCaml *)
    type 'a tree =
      | Node of 'a tree * 'a * 'a tree (* à ne pas confondre avec Node of ('a tree * 'a * 'a tree) *)
      | Leaf
     
    (* Caml Light ; possible, mais à éviter ! *)
    type 'a tree =
      | node of 'a tree * 'a * 'a tree (* à ne pas confondre avec node of ('a tree * 'a * 'a tree) *)
      | Leaf
    ;;
    - les phrases Caml Light se terminent toujours par ;;, contrairement à OCaml où on peut omettre (et c'est préférable) le ;;, sauf dans l'interprète (c'est pour lui dire jusqu'où interprèter).

    - les constructeurs Caml Light peuvent s'utiliser comme des fonctions...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    val node : 'a tree -> 'a -> 'a tree -> 'a tree
    ;;
    - il existe le mot-clef where en Caml Light, qui est un let ... = ... in ... inversé, inexistant en OCaml.

    - Très important : les caractères s'écrivent comme ça 'c' en OCaml et comme ceci `c` en Caml Light.

    - Les fonctions de la librairie standard sont complètement différentes. En Caml Light, elles sont toutes regroupées dans la même entité (voir la doc de Caml Light) et il y en a très très peu ; en OCaml, elles sont regroupées par modules : List (List.head, List.length, etc...), String (String.length, String.append, etc...), Array, etc... (voir la doc de OCaml).

    - Les noms de module en Caml Light correspondent au nom du fichier et s'utilisent avec le double underscore, comme dans graphe__create, tree__height, etc... alors qu'en OCaml on aurait Graphe.create, Tree.height, etc...

    - Les alias de type requièrent l'utilisation de == en Caml Light.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (* OCaml *)
    type color = int
     
    (* Caml Light *)
    type color == int
    ;;
    Voilà, à ces petites différences près, tout code Caml Light devrait compiler sans problèmes avec OCaml.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  14. #14
    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 Contribuez
    Toutes ces informations sont déjà dans le projet de FAQ fonctionnelle

    On a encore besoin de vos contributions Caml/F#/Haskell/Scheme/LISP, n'hésitez pas à participer au forum Contribuez,
    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.

  15. #15
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    On peut accéder à n'importe quel élément d'une chaîne de caractères via .[], que ce soit en OCaml ou Caml Light.

    Les principales différences sont :

    - le type 'a array de OCaml pour les vecteurs est 'a vect en Caml Light

    - il est impossible de déclarer une valeur commençant par une majuscule en OCaml ; les identificateurs commençant par une majuscule sont strictement réservés pour les constructeurs de type et les noms de modules, contrairement à Caml Light.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    (* OCaml *)
    type 'a tree =
      | Node of 'a tree * 'a * 'a tree (* à ne pas confondre avec Node of ('a tree * 'a * 'a tree) *)
      | Leaf
     
    (* Caml Light ; possible, mais à éviter ! *)
    type 'a tree =
      | node of 'a tree * 'a * 'a tree (* à ne pas confondre avec node of ('a tree * 'a * 'a tree) *)
      | Leaf
    ;;
    - les phrases Caml Light se terminent toujours par ;;, contrairement à OCaml où on peut omettre (et c'est préférable) le ;;, sauf dans l'interprète (c'est pour lui dire jusqu'où interprèter).

    - les constructeurs Caml Light peuvent s'utiliser comme des fonctions...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    val node : 'a tree -> 'a -> 'a tree -> 'a tree
    ;;
    - il existe le mot-clef where en Caml Light, qui est un let ... = ... in ... inversé, inexistant en OCaml.

    - Très important : les caractères s'écrivent comme ça 'c' en OCaml et comme ceci `c` en Caml Light.

    - Les fonctions de la librairie standard sont complètement différentes. En Caml Light, elles sont toutes regroupées dans la même entité (voir la doc de Caml Light) et il y en a très très peu ; en OCaml, elles sont regroupées par modules : List (List.head, List.length, etc...), String (String.length, String.append, etc...), Array, etc... (voir la doc de OCaml).

    - Les noms de module en Caml Light correspondent au nom du fichier et s'utilisent avec le double underscore, comme dans graphe__create, tree__height, etc... alors qu'en OCaml on aurait Graphe.create, Tree.height, etc...

    - Les alias de type requièrent l'utilisation de == en Caml Light.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (* OCaml *)
    type color = int
     
    (* Caml Light *)
    type color == int
    ;;
    Voilà, à ces petites différences près, tout code Caml Light devrait compiler sans problèmes avec OCaml.
    Merci pour ce récapitulatif. je crois qu'on peut mettre un définitif devant le topic

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par coyotte507 Voir le message
    Bah en fait à l'épreuve d'informatique c'est caml tout court pas ocaml...
    "caml" c'est le langage !
    pour ce langage tu as 2 implémentations à ta disposition :
    - "Objective Caml"
    - "Caml Light"

    Ces deux implémentations implémentent toutes les deux le langage "caml" !

    Si on te dis "caml" tout court, c'est qu'on fait référence au langage, et ce faisant l'implémentation peut être l'une ou l'autre.
    Lorsque que l'on dis "caml" tout court on ne dis pas si on utilise "Objective Caml" ou "Caml Light".

    Ainsi pour répondre bien précisément à ta question et pour être sur d'être bien compris, tu peux faire du caml avec ocaml !

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    pour faire une comparaison avec un autre langage, par exemple tu as le langage C, et gcc est un compilateur pour ce langage, de la même façon que caml est le langage et ocaml un compilateur pour ce langage.

  18. #18
    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
    Oui et non, il y a quand même des différences assez prononcées entre Caml Light et Objective Caml. En pratique par exemple le manuel OCaml spécifie le langage, en décrivant des impératifs que toutes les implémentations doivent respecter, et qui ne sont pas satisfaits par camllight.

    Ceci dit, il est globalement vrai de considérer caml light et OCaml comme deux "branches" d'un même langage. On pourrait plutôt parler d'évolution temporelle, caml light étant un "ancêtre" de OCaml.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par bluestorm Voir le message
    Oui et non, il y a quand même des différences assez prononcées entre Caml Light et Objective Caml. En pratique par exemple le manuel OCaml spécifie le langage, en décrivant des impératifs que toutes les implémentations doivent respecter, et qui ne sont pas satisfaits par camllight.

    Ceci dit, il est globalement vrai de considérer caml light et OCaml comme deux "branches" d'un même langage. On pourrait plutôt parler d'évolution temporelle, caml light étant un "ancêtre" de OCaml.
    cette nuance n'est pas fausse, mais on pourrait aussi formuler ça d'une autre manière :
    - "caml" tout court est un langage mais qui n'est pas standardisé
    - les 2 implémentations de ce langage OCaml et Caml Light implémentent leur propre version de ce langage.

    Mais bon vu les confusions dans l'esprit de l'étudiant, je voulais faire simple

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Je viens de revoir la page OCaml sur Wikipedia, la distinction entre langage caml et implémentation ocaml est très clairement faite dès la toute première phrase :

    """Objective Caml, également connu sous sa forme abrégée OCaml, est l'implémentation la plus avancée du langage de programmation Caml"""

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 20h01

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