Il y a beaucoup d'idiomes fonctionnels: monades, applicatifs, flèches, etc. Ils sont documentés dans différents articles mais malheureusement je ne connais aucun livre ou article où ils sont résumés en un seul endroit (il y a Typeclassopedia mais il en a beaucoup des zones qui ne sont pas bien couvertes). Quelqu'un peut-il recommander un article / livre qui les couvre bien en un seul endroit et qui peut être accessible à un programmeur ayant des compétences intermédiaires en PF?
scala
haskell
functional-programming
monads
Konstantin Solomatov
la source
la source
Réponses:
Ma suggestion est, si vous voulez apprendre la Scala, de lire le livre de Paul Chiusano et Runar Bjarnason:
http://manning.com/bjarnason/
Partie II: Conception fonctionnelle et bibliothèques de combinateurs
Partie III: Modèles de conception fonctionnelle
Partie IV: Briser les règles: effets et E / S
la source
Je suis désolé de ne pas connaître d'articles ou de livres qui couvrent en détail les différents usages de toutes ces constructions, mais je peux vous donner quelques liens vers des ressources individuelles.
Un modèle assez courant consiste à construire des transformateurs monades au lieu de simples 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, ce qui en fait une plus complexe capable de gérer les fonctionnalités des deux.
Dans Real World Haskell, il y a quelques chapitres sur les monades. Dans le chapitre 14. Monades, les auteurs expliquent les bases et certains usages courants (peut-être, liste, état). Le chapitre 15. La programmation avec des monades fournit plus d'explications sur la façon de les utiliser efficacement (il couvre également la monade du lecteur). Le chapitre suivant explique comment utiliser Parsec , mais il peut être plus intéressant de rechercher des articles expliquant son fonctionnement réel: cela devrait être un très bon exemple d'utilisation bien organisée des monades pour l'analyse. Fianlly, Chapitre 18. Transformateurs Monadprésente le fonctionnement des transformateurs monades, puis montre comment en créer un, étape par étape. Les considérations relatives aux dernières sections du chapitre sont également intéressantes.
J'ai lu une fois une question très intéressante sur SO sur les utilisations créatives des monades . Les liens proposés étaient des lectures géniales sur le sujet. Avec cet esprit, j'ai essayé de demander la même chose pour les flèches : j'ai certainement moins de réponses que celle sur les monades, mais intéressantes quand même.
En ce qui concerne les modèles de POO du groupe de quatre, il y a un bel ensemble de 3 articles par IBM sur le sujet dans leur série Pensée fonctionnelle . Le langage fonctionnel cible est Scala. Ils poursuivent en expliquant les modèles de conception habituels dans la POO et en montrant comment ils se mappent dans Scala.
L'article le plus pertinent pour votre question est certainement le premier, mais les deux autres peuvent néanmoins être des lectures intéressantes.
la source
Jeremy Gibbons a un blog Patterns dans FP qui est destiné à devenir à peu près le livre que vous demandez. Bien sûr, ce n'est pas encore en état d'être aussi utile que vous pourriez le souhaiter tout à l'heure, mais il mérite quelques encouragements!
En attendant, je dirai +1 pour Typeclassopedia de Brent Yorgey. C'est vraiment utile, et s'il y a des parties ultérieures qui confondent, ce site est un bon endroit pour aller au fond d'entre elles. Je sais que Brent le surveille. S'il n'atteint pas ses lecteurs, aidez-le.
la source
Beaucoup de trucs FP sont publiés sur le site d'Oleg: http://okmij.org/ftp/
Présentation sur les modèles de PF de Josh Suereth: http://jsuereth.com/intro-to-fp/
la source
Avez-vous lu les derniers chapitres de Learn You a Haskell for Great Good ?
Le chapitre 6 couvre les cartes et les plis, qui sont deux des «modèles de conception» les plus importants dans les langages fonctionnels.
Les chapitres 11 à 13 couvrent les fonctions, les fonctions applicatives et les monades, dans cet ordre. Ceci est utile - de nombreux didacticiels présentent les Functors, puis les Monades, puis ajoutent les Functors Applicatifs à la fin (s'ils le couvrent du tout). L'ordre dans LYAH est meilleur, car passer de Functors => Applicative Functors => Monads vous fait gravir progressivement les échelons de la généralité et du pouvoir.
Le chapitre 14 couvre les fermetures à glissière - vous pouvez effectivement les considérer comme des classes de conteneurs avec un pointeur vers une donnée spécifique, ce qui signifie que vous obtenez un accès O (1) et une mise à jour à l'emplacement du pointeur.
Il ne couvre pas les flèches ou les Comonads, qui sont un sujet plus avancé dans Haskell. Pour comprendre comment et pourquoi utiliser les flèches ou les comonades, vous devez absolument avoir déjà une solide compréhension des monades, donc je ne pense pas que ce soit un problème - LYAH est fermement destiné à l'extrémité débutante du marché Haskell.
la source