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 :

Aide pour les types


Sujet :

Caml

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Aide pour les types
    Bonjour,

    J'aimerais avoir votre avis sur le type que j'ai crée. J'aimerais savoir s'il est correct et utilisable.

    Dans l'exercice se trouve un type expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    type expression = 
    	| Const of int
    	| Var of string
    	| BOp of (int->int->int) * expression * expression
    Et on nous énonce ceci :

    Une instruction peut être:
    . une affection d'une expression à une variable,
    . une séquence de deux instructions
    . un choix d'une instruction parmi deux selon la valeur d'une expression
    . une répétition d'une instruction selon la valeur d'une expression

    6. Compléter le type instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type instruction = 
    	| Affectation of string * expression
    	| Sequence of instruction * instruction
    	| ...
    Donc personnellement, j'en ai deux différentes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     type instruction = 
    	| Affectation of string * expression
    	| Sequence of instruction * instruction
    	| Choix of instruction * instruction * expression
    	| Repet of instruction * expression
    ou celle-ci (je ne l'aime pas trop) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     type instruction = 
    	| Affectation of string * expression
    	| Sequence of instruction * instruction
    	| Choix of (expression->instruction->instruction->instruction)
    	| Repet of (expression->instruction)
    Puis on nous demande de faire ca :
    7) Donner la représentation par un terme Caml de type instruction du code C suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = 10;
    while (x) x = x - 1;
    Pour x = 10; c'est assez simple(je pense)
    j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Affection ("x", Const 10)
    Mais pour la suivante, je ne sais pas trop
    J'ai une forme de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Repet(Affectation("x",BOp((-),Var "x",Const 1)), Var "x")
    Mon problème c'est que le principe du while(x) n'est pas présent dans cette écriture, il y a bien Repet mais bon...
    Si quelqu'un peut m'aider ça serait gentil .

    Cordialement.

  2. #2
    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 pense que ce que tu proposes à la fin est juste, que "Repet" correspond à while. D'ailleurs à ta place j'aurais renommé Repet en While (avec l'expression en premier) et Choix en If (pareil, l'expression en premier). Mais c'est juste une question d'habitude.

    Par contre ta "deuxième proposition" pour les types ne va pas. Quand tu donnes Repet of (expression->instruction), ce n'est pas *du tout* équivalent à Repet of instruction * expression. Dans le deuxième cas, un nœud Repet contient une expression et une instruction : tu peux les sortir, les tripoter, etc. Dans le premier cas le nœud Repet contient *une fonction* qui attends que *tu* lui donnes une expression, et qui te sort une instruction. Donc c'est à toi de fournir une expression, il n'y en a pas dans le nœud, et l'instruction que tu obtiens n'est pas la même selon les cas.

    Ces deux solutions ne sont donc pas du tout identiques, et il est important que tu comprennes bien la différence.

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Je pense que ce que tu proposes à la fin est juste, que "Repet" correspond à while.
    Donc mon premier type serait donc juste à ton avis?
    D'ailleurs à ta place j'aurais renommé Repet en While (avec l'expression en premier) et Choix en If (pareil, l'expression en premier).
    Je suis d'accord, c'est plus instinctif.
    Ces deux solutions ne sont donc pas du tout identiques, et il est important que tu comprennes bien la différence.
    Je comprends tout à fait la différence.
    Plus simplement, j'aimerais savoir si, dans le type, je ne devrais pas mettre des fonctions comme dans le deuxième exemple. Mais comme tu penses que ce que j'ai proposé à la fin est juste, le premier type devrait être correct.

  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
    Oui, ce que tu as mis est correct.

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

Discussions similaires

  1. [Conception] Aide pour les liaison entre 2 table
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/09/2006, 13h03
  2. Besoin d'aide pour les dates
    Par Aurore_atmo dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/07/2006, 15h37
  3. Maxvalue pour les types de var
    Par VincenzoR dans le forum Oracle
    Réponses: 2
    Dernier message: 23/11/2005, 09h58
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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