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 :

Erreur sur fonction


Sujet :

Caml

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Erreur sur fonction
    Bonjour,

    pourriez vous m'aider à décrypter pourquoi l'interpréteur ne veut pas de ma fonction consEns?


    Cette dernière fait appel à appartient qui marche parfaitement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let rec appartient = fun e -> fun l ->
    		match l with
    		| [] -> false
    		| x::l2 -> (x=e) || appartient e l2;;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let rec consEns = fun l ->
    		match l with
    		| [] -> []
    		| x::l2 -> if not(appartient x l2) then x::(consEns l2);;
    J'avoue que je ne comprends pas pourquoi cela ne fonctionne pas...la fonction est censé supprimer tous les doublons d'une liste.

  2. #2
    Membre du Club
    Homme Profil pro
    Chercheur en maths appli
    Inscrit en
    Novembre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Chercheur en maths appli
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 29
    Points : 46
    Points
    46
    Par défaut
    Salut,

    quand tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if condition then resultat
    sans branche else, Caml complète avec :

    Par conséquent, l'interpréteur attend resultat de type unit !

    Edit : en programmation fonctionnelle, on ne peut pas "ne pas renvoyer de résultat". Dans ton cas, ça n'a pas de sens de ne rien renvoyer si x appartient à l2...

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Suis je bête...la prog à 8h du mat ne me réussis pas je crois

    Oui ça parait évident maintenant, je fais tourner en récursif donc je dois forcement avoir un résultat à chaque itération du même type. Je n'ai qu'à renvoyer la liste inchangé.

    Merci.

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

Discussions similaires

  1. Erreur sur fonction READ (Communication Série)
    Par Kartoon67 dans le forum LabVIEW
    Réponses: 11
    Dernier message: 22/04/2009, 13h40
  2. Erreur sur fonction d'extraction des mots
    Par Siguillaume dans le forum Langage
    Réponses: 16
    Dernier message: 11/06/2008, 10h16
  3. Erreur sur Fonction PL/SQL
    Par boudou dans le forum PL/SQL
    Réponses: 2
    Dernier message: 22/10/2007, 08h34
  4. [MySQL] Erreur sur fonction PHP
    Par lothar59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/03/2007, 11h31
  5. Erreur sur fonction
    Par all4linux dans le forum C
    Réponses: 2
    Dernier message: 30/06/2006, 10h40

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