J'écris du code OCaml qui lit dans une liste et supprime tous les caractères qui apparaissent au début de la liste. Par exemple, la liste removeI['i';'i';'a';'c';'i']
doit renvoyer -: int * char list = ['a';'c';'i']
, car il y a 2 'i au début de la liste. Je crois que je sais comment l'appliquer correctement; cependant, je veux retourner un tuple qui inclut le nombre de 'i' enlevés ainsi que la nouvelle liste avec les 'i retirés. Je sais que cela peut sembler déroutant, mais un exemple serait Il y a 2 'i enlevés et la nouvelle liste avec les' i 'enlevés.OCaml compte des éléments consécutifs dans une liste
Jusqu'à présent, j'ai la fonction suivante:
let rec removeI list = match list with
| [] -> []
| x::[] -> x::[]
| x::y::t1 -> if x='i' then removeI (y::t1)
else list;;
Cette retourne la liste avec le premier « i est retiré, mais je continue à obtenir des erreurs lorsque je tente d'inclure le nombre de supprimé » i est dans le cadre de un tuple. Quelqu'un pourrait-il me pousser dans la bonne direction? Merci!