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 :

type 'a option et le Some


Sujet :

Caml

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut type 'a option et le Some
    Me revoilà avec une nouvelle question :
    J'utilise un type "option" et j'aimerai savoir s'il y a un moyen d'alléger la syntaxe :
    Actuellement, je suis obligé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    match variable with
    Some blabla -> ()
    |Some blabla2 -> ()
    ...
    |None blabla -> ()
    Ca devient assez lourd de mettre des Some partout, existe-t-il un moyen pour accéder directement au contenu, sans devoir mettre des Some partout ?

  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
    Si c'est toujours pour de l'analyse lexicale, t'embêtes pas avec char stream, utilise plutôt la fonction Pervasives.input_line.
    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
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par x0rster Voir le message
    Me revoilà avec une nouvelle question :
    J'utilise un type "option" et j'aimerai savoir s'il y a un moyen d'alléger la syntaxe :
    Actuellement, je suis obligé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    match variable with
    Some blabla -> ()
    |Some blabla2 -> ()
    ...
    |None blabla -> ()
    ?
    J'avoue etre un peu etonne par le None blalba... Ensuite si le but est de juste renvoyer la meme chose a chaque fois (en l'occurence unit), il n'y a evidement aucune raison de faire un match. Ensuite, tu peux evidement imbriquer les matchs (attention au parenthesage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    match variable with
      |Some x -> 
        (match x with 
          | blabla 1 -> ...
          | blabla2 ->...
          ...)
      | None -> ...
    Pour finir, tu peux aussi definir des aides comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    let option_apply f o n = math o with
      | Some s -> f s
      | None -> n
    Ou des choses comme ca

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci pour ces réponses, je n'avais effectivement pas pensé à imbriquer les match .

    Sinon ce n'est plus pour faire de l'analyse lexicale mais pour faire de l'analyse syntaxique cette fois, on doit le faire à la main sans utiliser de yacc/bison/...

    Et sinon le "blabla" et les types unit renvoyés n'ont rien à voir avec le vrai code, c'était juste pour l'exemple, c'est plutôt de ce genre :
    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
     
    let rec instruction () =
            match !symbole_courant with
            Some TBEGIN -> (
                    symbole_suivant ();
                    instruction ();
                    if !symbole_courant <> Some TPOINTVIRGULE then
                           acceptKeyword TEND
                    else (
                            symbole_suivant ();
                            instruction ();
                    )
            )
            | Some TIDENTIFIER id -> (
                    (* Ajouter appel procedure *)
                    instruction_affectation ();
            )
            | Some TIF -> instruction_if ()
            | Some TWHILE -> instruction_while ()
            | Some TFOR -> instruction_for ()
            | Some TCASE -> instruction_case ()
            | None -> raise Eof
            | _ -> ()
    ;;
    Merci de votre aide

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

Discussions similaires

  1. Envoie d'un type Select-Options à une méthode
    Par 19cmos83 dans le forum SAP
    Réponses: 18
    Dernier message: 22/09/2009, 15h34
  2. Quel type de valeur est autorisé dans les balises option d'un select ?
    Par mapmip dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/09/2008, 16h11
  3. Charger un url dans le <option> d'un <input type select>
    Par whitespirit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/05/2008, 15h01
  4. option TYPE = PCT dans GCHART
    Par Bibi42 dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 13/05/2008, 11h10
  5. [Tcl/Tk] Unknown option "-type"
    Par Biosox dans le forum Tcl/Tk
    Réponses: 4
    Dernier message: 25/09/2006, 15h57

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