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 :

pattern matching basique


Sujet :

Caml

  1. #21
    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
    peut-on parcourir un tableau sans utiliser de boucle imperative? (for ou while)

  2. #22
    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.

    D'une part avec les iter* (mais ça reste des solutions impératives en général), et surtout avec map et, plus généralement, les fold_*.

    Bien sûr on peut recoder tout ça avec une récursion.

  3. #23
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par nonpoluant Voir le message
    peut-on parcourir un tableau sans utiliser de boucle imperative? (for ou while)
    Tu vois une boucle dans mon programme ? De toute façon il n'y a pas de boucles en Haskell.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maximumBy (comparing snd) . assocs
    est le bout de code qui parcourt le tableau : assocs convertit le tableau vers une liste de couples (index, élément) et maximumBy est un simple fold (foldl1 . maxBy). Dans un autre langage qu'Haskell, le assocs tuerait les performances, mais ici en fait la "liste" n'est jamais vraiment créée, le parcours se fait en O(1) niveau consommation mémoire (comme une boucle parcourant un tableau en impératif). En fait avec les optimisations appropriées (stream fusion), ce bout de code de haut-niveau peut-être traduit en une joli boucle bien minimale en assembleur.

    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Pattern Matching sur une InputStream?
    Par Phoxtrot dans le forum Général Java
    Réponses: 2
    Dernier message: 19/05/2008, 14h36
  2. Use of uninitialized value in pattern match (m//)
    Par Vladkergan dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2008, 19h25
  3. pattern matching (image processing)
    Par anatore dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 15/10/2007, 16h01
  4. Use of uninitialized value in pattern match(m//)
    Par hayaet dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2007, 11h45
  5. [Regex] Pattern matching
    Par jeRame dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/06/2007, 14h28

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