Tu seras d'accord pour dire qu'il s'agit d'accéder élément par élément à une structure pour y appliquer un traitement. On peut le reformuler en disant qu'il s'agit d'appliquer un traitement sur l'ensemble des éléments de manière successive.
Dans ce cas, il n'est pas nécessaire d'avoir une fonction next qui serait typée ainsi :
valnext:'at->unit->'a(* Récupère l'élément suivant, on suppose que la structure garde en mémoire ce qui a déjà été parcouru *)
mais plutôt:
valiter:('a->unit)->'a->unit(* [iter f tree] applique f a chaque élément du graphe (on suppose que l'on s'intéresse aux effets de bord)*)valfold:('a->'b->'a)->'a->'bt->'a(* unifie le graphe sur une valeur unique de type 'a *)
Cela ne limite pas du tout le traitement de la structure, c'est même au contraire une manière commune de traiter les données.
[^] # Re: Map-Reduce
Posté par chimrod (site web personnel) . En réponse au journal Données vs Code. Évalué à 4.
Reprenons ce que fait l'itérateur d'un point de vue fonctionnel.
Tu seras d'accord pour dire qu'il s'agit d'accéder élément par élément à une structure pour y appliquer un traitement. On peut le reformuler en disant qu'il s'agit d'appliquer un traitement sur l'ensemble des éléments de manière successive.
Dans ce cas, il n'est pas nécessaire d'avoir une fonction next qui serait typée ainsi :
mais plutôt:
Cela ne limite pas du tout le traitement de la structure, c'est même au contraire une manière commune de traiter les données.