Je viens de trouver ce type pour définir les itérateurs en ocaml ('a -> unit) -> unit sur un livre, j'ai lu que c'estpurement fonctionnel et qu'on ne peux pas ecrire map2 , je voudrais savoir ce que veut dire purement fonctionnel ici ou sont les effets de bord et pourquoi on ne peut pas ecrire map2 en utilisant cette structure
Tu peux nous donner plus de détails ? Les itérateurs sur une structure de données (par ex une liste) sont généralement iter (et iteri), map (et mapi, rev_map) et fold. Les itérateurs sur deux structures de données (par ex deux listes) sont iter2, map2, fold2.
Dis-nous à quoi correspond le type que tu nous a donné, quelle est la structure de données que tu considères, et ce que tu veux faire avec.
En fait c'est concernant batteries j'ai trouvé qu'il existe différentes structures de données ils ont cités les enumérations (Enum de batteries) les séquences et aussi les iterateurs la définition du type de ce dernier et comme je l'ai donné ils disent que c'est purement fonctionnel (il existe des efftes de bord mais caché a l'interieur de la structure et ils ne sont pas visibles depuis l'exterieur) c'est tout ce qu'ils ont dit sur ca et jarrive pas vraiment à voir ou sont les effets de bord ou quoi est du cette explication
Dans Batteries, il y a effectivement les structures de données Enum et Seq. Les itérateurs, eux, sont des fonctions que l'on appelle sur une structure de donnée particulière.
ie elle prend 1) une fonction qui s'applique sur chaque élément de la liste, 2) une liste. Il s'utilise par ex comme ceci :
List.iter (fun element -> print_int element) [1; 2; 3];;
et affiche :
123
Le type unit est une absence de résultat (pas de valeur retournée), mais ça ne veut pas dire pour autant qu'il ne se passe rien. Tu peux par exemple utiliser des fonctions d'affichage, comme je l'ai fait.
Pour les autres structures de données, ça va être peu ou prou la même chose : l'itérateur iter prend en paramètres 1) une fonction qui s'applique sur un élément de la structure de données, 2) la structure de données. Son type sera donc :
('a -> unit) -> 'a t -> unit
où t est le type de la structure de données (List, Seq, Enum, etc).
merci et pour l'explication sur les effets de bord donnée cela veut dire quoi dans ce cas?
[Ocaml] Fonction purement fonctionnel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon portfolio photo : https://www.instagram.com/charlievanaret_photo/
Mon portfolio photo : https://www.instagram.com/charlievanaret_photo/