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.
J'explique le principe de la fonction:
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) ;;
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:
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part aux ((s.[i])::acc) (pred i)
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
Partager