Articles of monades

Comment fonctionne la monade ST?

Je comprends que la monade ST est quelque chose comme un petit frère d’IO, qui à son tour est la monade d’état avec la magie de RealWorld . Je peux imaginer des états et je peux imaginer que RealWorld est en quelque sorte placé dans IO, mais chaque fois que j’écris une signature de type […]

Comment et pourquoi la monade de Haskell Cont fonctionne-t-elle?

Voici comment la monade Cont est définie: newtype Cont ra = Cont { runCont :: (a -> r) -> r } instance Monad (Cont r) where return a = Cont ($ a) m >>= k = Cont $ \c -> runCont m $ \a -> runCont (ka) c Pourriez-vous expliquer comment et pourquoi cela fonctionne? […]

Confondu avec la transformation for-comprehension to flatMap / Map

Je ne semble vraiment pas comprendre Map et FlatMap. Ce que je n’arrive pas à comprendre, c’est comment une compréhension est une séquence d’appels nesteds à map et flatMap. L’exemple suivant provient de la functional programming dans Scala def bothMatch(pat:Ssortingng,pat2:Ssortingng,s:Ssortingng):Option[Boolean] = for { f <- mkMatcher(pat) g <- mkMatcher(pat2) } yield f(s) && g(s) Se […]

«Les transformateurs Monad plus puissants que les effets» – Exemples?

Le document “Programmation et raisonnement avec effets algébriques et types dépendants” par Edwin C. Brady sur les effets dans Idris contient l’affirmation (non référencée) que: Bien que [transformateurs d’effets et monades] ne soient pas équivalents en puissance (les monades et les transformateurs monad peuvent exprimer plus de concepts), de nombreux calculs efficaces communs sont capturés. […]

Exemple concret montrant que les monades ne sont pas fermées sous la composition (avec preuve)?

Il est bien connu que les foncteurs applicatifs sont fermés sous composition, mais pas les monades. Cependant, j’ai eu du mal à trouver un contre-exemple concret montrant que les monades ne composent pas toujours. Cette réponse donne [Ssortingng -> a] comme exemple de non-monade. Après avoir un peu joué avec, je le crois intuitivement, mais […]

Comment jouer avec Control.Monad.Writer en haskell?

Je suis novice en functional programming et récemment en train d’apprendre à Learn a a Haskell , mais lorsque j’ai parcouru ce chapitre , je me suis retrouvé avec le programme ci-dessous: import Control.Monad.Writer logNumber :: Int -> Writer [Ssortingng] Int logNumber x = Writer (x, [“Got number: ” ++ show x]) multWithLog :: Writer […]

mtl, transformers, monads-fd, monadLib, et le paradoxe du choix

Hackage a plusieurs packages pour les transformateurs monad: mtl : bibliothèque de transformateurs Monad transformateurs : foncteur béton et transformateurs monad monads-fd : Classes Monad, utilisant des dépendances fonctionnelles monads-tf : Classes Monad, utilisant des familles de types monadLib : une collection de transformateurs monad . mtl-tf : bibliothèque de transformateurs monade utilisant des familles […]

Différence entre État, ST, IORef et MVar

Je travaille par l’intermédiaire de Write Yourself a Scheme en 48 heures (je suis jusqu’à environ 85 heures) et je suis arrivé à la partie concernant l’ ajout de variables et d’assignations . Il y a un grand saut conceptuel dans ce chapitre, et j’aurais aimé que cela se fasse en deux étapes avec un […]

Qu’est-ce que monad indexé?

Qu’est-ce que la monade indexée et la motivation pour cette monade? J’ai lu que cela aide à garder une trace des effets secondaires. Mais la signature de type et la documentation ne me mènent nulle part. Quel serait un exemple de la façon dont il peut aider à suivre les effets secondaires (ou tout autre […]

Les applicatifs composent, les monades ne le font pas

Les applicatifs composent, les monades ne le font pas. Que signifie la déclaration ci-dessus? Et quand est-on préférable à autre?