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 :

list et fonction auxiliaire


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut list et fonction auxiliaire
    Bonjour , jai un petit probleme
    jarriver pas à implementer cette fonction

    let addpositive i=
    let lo=[2;3;4;5;-1];
    let rec list acc = function
    |[]->acc
    |a::b -> if (a<0) then list acc b else list (a+acc) b
    in list 0 lo;;

    ou la fonction addpositive fait l' addition juste des membre positive de lo que jai definit à l'intérieure de la fonction
    mercii d'avance

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par nemoO Voir le message
    ou la fonction addpositive fait l' addition juste des membre positive de lo que jai definit à l'intérieure de la fonction
    La fonction fait la somme des entiers positifs présents dans la liste lo ? Sans considération de son paramètre ? C'est donc une fonction constante, tu confirmes ? La fonction list que tu as créée est correcte (à part son nom un peu maladroit à mon goût).
    -- Yankel Scialom

  3. #3
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    Effectivement, j'ai une erreur de compilation chez moi, dû au fait que tu ne confères pas la bonne portée à lo : puisqu'il s'agit d'une variable locale, tu devrais utiliser in lors de sa définition. D'autre part, il serait plus logique d'agir sur un argument, dans le sens où tu pourras de toute manière faire ton test dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let addpositive l =
      let rec aux n l =
        match l with
          [] -> n
        | head :: tail -> if head > 0 then aux (n + head) tail
                          else aux n tail in
      aux 0 l
      ;;
    Bonne journée.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  4. #4
    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 let rec puis let
    Une pratique courante en Caml consiste à d'abord définir une fonction avec accumulateur (let rec) puis à la redéfinir (let) sans accumulateur.

    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let rec sum_positives acc = function
       | [] -> acc
       | h :: t -> sum_positives (if h > 0 then acc + h else acc) t
    
    let sum_positives = sum_positives 0;;
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/08/2005, 11h16
  2. [interbase6]liste en fonction d'un dbgrid
    Par macadam314 dans le forum Bases de données
    Réponses: 12
    Dernier message: 01/03/2005, 09h43
  3. Liste de Fonction DirectX
    Par naejg dans le forum DirectX
    Réponses: 6
    Dernier message: 30/03/2004, 15h12
  4. Liste des fonctions
    Par Mookie dans le forum C
    Réponses: 2
    Dernier message: 22/09/2003, 16h42
  5. [postgreSQL] liste de fonctions
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 16h13

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