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 :

[débutant] Pattern matching avec un n-uplet


Sujet :

Caml

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut [débutant] Pattern matching avec un n-uplet
    Salut encore,

    je ne vois pas comment faire pour faire du pattern matching avec des n-uplets, toutes mes tentatives se sont soldées par des échecs.

    Avec les liste, rien de plus simple, mais avec les n-uplets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    match e with
    (a*b*c) -> ...
    Ca marche pas...

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Pour détruire une valeur (avec un pattern) on utilise presque la même syntaxe que pour le construire, donc un pattern pour un n-uplet ressemble à :
    --
    Jedaï

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Merci!

    Ca marche!

  4. #4
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Et comme pour contruire (et contrairement à Haskell), les parenthèses sont optionnelles.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Merci, je ne savais pas.

  6. #6
    Membre actif
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Par défaut
    C'est en plus, mais ça peut souvent être pratique : le patern matching implicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    let f a b c = (a+b, b+c, a+c) in
    let g a b c =
      let (x,y,_) = f a b c in
      (x,y)
    Une fonction f qui renvoit un triplet, et dans la fonction g on appel la fonction f et on match x avec la premiere composante, on match y avec la seconde composante, et on laisse tomber la troisieme composante.
    Ca marche aussi pour les listes etc.

    Dans une moindre mesure on peut peut-être aussi pousser le vice à parler de patern matching implicite pour des cas comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    let x = (1, 2, 3) in
    let f (a, b, _) = (a, b) in
    f x
    Ici on a une fonction qui prend un triplet, et on match a avec la premiere composante, b avec la seconde, et on laisse tomber la troisieme, et on renvoit un couple ne contenant que les deux premiere composante, et on aplique cette fonction au triplet x.

    derniere exemple : une fonction qui prend une liste en argument dont il existe au moins 2 élément.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    let f e1::e2::tail = (e1, e2)
    in f [1, 2, 3, 4]
    voilà une fonction f qui match l'élément obligatoire avec e1, le second élément obligatoire avec e2, et le reste de la liste (peut être la liste vide) avec tail, et renvoit le couple des deux premiers éléments de la liste.

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

Discussions similaires

  1. pattern matching avec boost graph
    Par makrouna dans le forum Boost
    Réponses: 2
    Dernier message: 30/07/2011, 00h56
  2. Réponses: 1
    Dernier message: 05/06/2009, 10h48
  3. [Débutant][Phppgadmin] problème avec les types
    Par PoY dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2004, 17h06
  4. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  5. [Débutant][Applet] Communication avec Servlet - IO Exception
    Par gandalf_le_blanc dans le forum Applets
    Réponses: 35
    Dernier message: 16/04/2004, 13h29

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