107 votes

Modèles de conception fonctionnelle

Il y a beaucoup de fonctionnelle expressions idiomatiques: les monades, des applicatifs, des flèches, etc. Ils sont documentés dans les différents articles, mais malheureusement, je ne connais pas de livre ou de l'article où ils sont résumées en un seul endroit (il y a Typeclassopedia mais il y a beaucoup de régions qui ne sont pas bien). Quelqu'un peut-il recommander un article/livre qui couvre bien en un seul endroit et qui peut être accessible à un programmeur intermédiaire compétences en FP?

35voto

Edmondo1984 Points 5059

Ma suggestion est que si vous voulez apprendre Scala, à lire le livre de Paul Chiusano et Tony Morris:

http://manning.com/bjarnason/

Partie II: conception Fonctionnelle et combinator bibliothèques

  1. Peu de langues
  2. La sérialisation JSON
  3. En fonction de spécification des tests
  4. Les analyseurs
  5. Purement fonctionnelle parallélisme
  6. Purement fonctionnelle de l'état

Partie III: modèles de conception Fonctionnelle

  1. Le cas de l'abstraction
  2. Monoids
  3. Les foncteurs
  4. Les monades
  5. Les foncteurs applicatifs
  6. Traversable et pliable structures de données
  7. Comonads

Partie IV: Briser les règles: les effets et les I/O

  1. Effets contre les effets secondaires
  2. Traitement de flux et incrémentielles I/O
  3. L'application de l'effet-établissement de la portée avec le système de type

31voto

Riccardo Points 6035

Je suis désolé, je ne sais pas d'articles ou de livres qui couvrent en détail les différents usages pour l'ensemble de ces constructions, mais je peux vous donner quelques liens vers des ressources individuelles.

Un modèle est de construire monade transformateurs au lieu d'une simple monades (voir aussi le lien dans le paragraphe suivant). Cela signifie essentiellement que vous construisez quelque chose qui doit être combiné avec d'autres monades, résultant en un plus complexe, capable de gérer les fonctionnalités de chacun d'eux.

Dans Real World Haskell il y a quelques chapitres sur les monades. Dans Le Chapitre 14. Les monades , les auteurs expliquent les bases et quelques usages communs (peut-être, de la liste de l'état). Le chapitre 15. La programmation avec des monades fournit plus d'explications sur la façon de les utiliser efficacement (il couvre le lecteur monade). Le chapitre suivant explique comment utiliser Parsec, mais il peut être plus intéressant de rechercher pour les articles traitant de la façon dont il fonctionne réellement: il doit être un très bon exemple d'une utilisation de monades pour l'analyse. Au Total, Chapitre 18. Monade transformateurs présente comment monade transformateurs de travail, et qui montre comment la construire, étape par étape. Les considérations vers les dernières sections de ce chapitre sont également intéressants.

J'ai lu une fois une très intéressante question sur DONC sur des utilisations créatives de monades. Les liens proposés étaient géniaux lectures sur le sujet. Avec cet esprit, j'ai essayé de poser la même pour les flèches: j'ai certainement eu moins de réponses que celui sur les monades, mais intéressantes tout de même.


À l'égard de la programmation orientée objet patrons par la bande des quatre, il y a une belle série de 3 articles par IBM sur le sujet dans leur série Fonctionnelle de la pensée. La cible fonctionnelle de la langue est à la Scala. Ils procèdent en expliquant habituel des modèles de conception en programmation orientée objet, et en montrant comment ils carte en Scala.

  1. Fonctionnelle de la pensée: Fonctionnelle des modèles de conception, Partie 1. Ici, ils couvrent des usines, des modèles de méthodes, la stratégie, le poids mouche. La ligne de fond est que, en ayant des fonctions comme la première classe de valeurs, tout est beaucoup plus simple.
  2. Fonctionnelle de la pensée: Fonctionnelle des modèles de conception, Partie 2. C'est à propos de java et groovy. Il répond au motif adaptateur.
  3. Fonctionnelle de la pensée: Fonctionnelle des modèles de conception, Partie 3. Ici, ils parlent de l'interprète modèle. Encore une fois, la langue cible est groovy.

Les plus pertinents de l'article w.r.t. votre question est pour vérifier que le premier, mais les deux autres peuvent être intéressantes lectures, tout de même.

18voto

pigworker Points 20324

Jeremy Gibbons a un des Modèles de la FP blog qui est destiné finalement à devenir assez bien le livre que vous demandez. Bien sûr, ce n'est pas encore en état d'être aussi utile que vous pourriez tout à l'heure, mais il mérite un peu d'encouragement!

En attendant, je vais dire +1 pour le Brent Yorgey de Typeclassopedia. C'est vraiment utile, et si il y a des parties plus tard, qui confondent, ce site est un bon endroit pour obtenir à la fin de ces derniers. Je sais Brent garde sous revue. S'il n'est pas atteint ses lecteurs, donnez-lui de l'aide.

9voto

Andriy Plokhotnyuk Points 3309

Trucs de beaucoup de FP sont publiés sur le site d’Oleg : http://okmij.org/ftp/

Modèles de présentation sur FP de Josh Suereth : http://jsuereth.com/intro-to-fp/

5voto

Chris Taylor Points 25079

Avez-vous lu les chapitres d' Apprendre que Vous avez un Haskell pour le Grand Bien?

  • Le chapitre 6 présente des cartes et des plis, qui sont deux des plus importants "design patterns" dans les langages fonctionnels.

  • Les chapitres 11-13 couvrir les Foncteurs, les Foncteurs Applicatifs et les Monades, dans cet ordre. Ceci est utile - de nombreux tutoriels introduire des Foncteurs et puis Monades, et puis tack Foncteurs Applicatifs sur à la fin (si ils le couvrir à tous). L'ordre dans LYAH est mieux, parce que le déplacement de Foncteurs => Foncteurs Applicatifs => Monades se déplace progressivement de l'échelle de la généralité et de la puissance.

  • Le chapitre 14 traite des Fermetures à glissière - vous peut effectivement penser que les classes conteneur avec un pointeur sur un élément spécifique de données, ce qui signifie que vous obtiendrez O(1) pour accéder et mettre à jour à l'emplacement du pointeur.

Elle ne couvre pas les Flèches ou Comonads, qui sont un sujet plus complexe en Haskell. Pour comprendre comment et pourquoi utiliser les Flèches ou la Comonads vous devriez vraiment avoir une solide connaissance de Monades déjà, donc je ne pense pas que c'est un problème - LYAH est résolument destiné aux débutants à la fin de la Haskell marché.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X