p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    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 : 0
    Points
    0

    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 Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    juin 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    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 184
    Points : 1 727
    Points
    1 727

    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).

  3. #3
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 18
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 234
    Points : 822
    Points
    822

    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
    Rédacteur
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    juin 2007
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : juin 2007
    Messages : 1 617
    Points : 2 773
    Points
    2 773

    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: le cours OCaml, 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