Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ocaml] Fonction purement fonctionnel

    14 mai 2018 à 20:16:10

    Bonjour,

     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

    Merci :)

    -
    Edité par KahinaFKR 14 mai 2018 à 20:17:27

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2018 à 9:08:44

      Salut, d'après wikipédia (https://fr.wikipedia.org/wiki/Programmation_fonctionnelle) purement fonctionnel veut juste dire qu'il n'y a pas d'éléments impératifs donc pas d'effets de bord.

      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2018 à 17:04:11

        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.
        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2018 à 6:56:54

          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

          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2018 à 13:32:06

            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.

            Par exemple, List.iter a comme type :
            iter : ('a -> unit) -> 'a list -> unit
            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
            t est le type de la structure de données (List, Seq, Enum, etc).
            • Partager sur Facebook
            • Partager sur Twitter
              17 mai 2018 à 9:03:40

              merci et pour l'explication sur les effets de bord donnée cela veut dire quoi dans ce cas?
              • Partager sur Facebook
              • Partager sur Twitter

              [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.
              • Editeur
              • Markdown