J'ai un tuple (int * string) que je veux convertir en liste. Le tuple est de la forme (N, E) où N est le nombre d'occurrences de l'élément E. La fonction devrait retourner une liste avec N occurrences de E dans celle-ci. L'exemple est ci-dessous. Supposons que cette fonction s'appelle tuple_decode.Fonction Ocaml pour convertir un tuple en une liste
tuple_decode (1, "A") -> ["A"]
tuple_decode (2,"B") -> ["B";"B"]
tuple_decode (4,"C") - > ["C";"C";"C";"C"]
La fonction tuple_decode est la suivante
let tuple_decode acc (n,elem) =
let add_one_elem i =
match i with
0 -> acc
| i -> elem :: acc ; add_one_elem (i-1) (* Line 184 *)
in
add_one_elem n
;;
lorsque je tente de compiler cette fonction que je reçois l'erreur suivante.
File "all_code.ml", line 184, characters 11-22:
Warning 10: this expression should have type unit.
File "all_code.ml", line 184, characters 25-37:
Error: Unbound value add_one_elem
Quelqu'un pourrait-il m'aider à comprendre pourquoi j'obtiens cette erreur et ce message d'avertissement.
salutations Puneet
En outre, il est intéressant de noter que, pour la partie d'avertissement, si 'S1' n'a pas de type' unit' le résultat est jeté. Donc, si vous ne passez pas l'accumulateur en argument à votre fonction, l'appel récursif est inutile. – Thomas
Merci, j'ai ajouté votre suggestion pour clarifier la réponse. – pad