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] Comment ce code marche-t-il?


Sujet :

Caml

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut [Débutant] Comment ce code marche-t-il?
    Bonjour,

    je débute en caml, j'essaye de trouver des tutos sur le net mais c'est pas si facile...

    Néanmoins je vais faire de mon mieux pour apprendre ce langage très vite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    open String
     
    let char_list_of_string s =
    	let rec aux acc = function
    		-1 -> acc
    	| 	i  -> aux ((s.[i])::acc) (pred i)
    	in 
    	aux [] (length s - 1)
    ;;
    J'explique le principe de la fonction:
    On fournit une string s, et on la convertit en liste de char.

    Si on passe -1 en paramètre, alors on retourne -1. (fin de chaine?)
    Si on passe un autre nombre en paramètre, on appelle la fonction récursive sur elle-même.

    Mais justement j'ai du mal à comprendre cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aux ((s.[i])::acc) (pred i)
    La fonction aux n'était-elle pas censée prendre un seul argument? Le pred i est logique, on appelle la fonction pour le i-1 ème caractère...
    Mais pourquoi faire un (s.[i]::acc) ? On fait une liste contenant un caractère de la string et l'entier passé en paramètre?

    Pareil, à l'appel, je ne vois pas ce que fait le [] après le aux, si on veut faire une liste ne vaudrait-il pas le mettre avant le aux?

    Merci d'avance,

    Coyotte507

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Points : 1 412
    Points
    1 412
    Par défaut
    Salut,

    La chose importante à comprendre est "function". Ce mot-clé introduit une fonction anonyme qui effectue du filtrage sur son argument.

    "function" est équivalent à "fun x -> match x with"

    Ta fonction aux prend deux arguments. Le premier est acc, une liste (cette liste se contruit au fur et à mesure : à chaque appel récursif, on y ajoute un élément). Le deuxième n'a pas de nom et est un entier (-1 pour le cas d'arrêt).

    Sachant cela, tu peux relire le code - et poser d'autres questions si tu es toujours bloqué.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Merci beaucoup de la réponse super rapide,

    en effet c'est beaucoup plus clair comme ça!

    Je met pour le moment

  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
    Citation Envoyé par coyotte507
    je débute en caml, j'essaye de trouver des tutos sur le net mais c'est pas si facile...
    Et pourtant, il y en a un certain nombre, tu devrais trouver ton bonheur parmi ceux-ci.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    Et pourtant, il y en a un certain nombre, tu devrais trouver ton bonheur parmi ceux-ci.
    Merci pour ces liens.

    Je trouve le tutoriel d'ocaml-tutoriel.org très pratique et rapide, mais il y a quelques lacunes (ou notions que je n'ai pas encore abordées) d'où mes question sur le forum

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

Discussions similaires

  1. [débutant] Comment décaler un bouton à partir du code Java ?
    Par shamri dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 18/06/2010, 14h29
  2. Débutant. Comment rassembler du code.
    Par pconrad dans le forum PL/SQL
    Réponses: 8
    Dernier message: 24/02/2009, 14h14
  3. Réponses: 7
    Dernier message: 10/02/2009, 14h41
  4. [Débutant] Comment adapter ce petit bout de code?
    Par wazodnuit dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2007, 09h03
  5. Réponses: 1
    Dernier message: 04/01/2007, 13h43

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