Articles of monades

Utiliser la Maybe Monad en “reverse”

Disons que j’ai plusieurs fonctions: f :: a -> Maybe a g :: a -> Maybe a h :: a -> Maybe a Et je veux les composer de la manière suivante: Si f retourne Nothing, calcule g. Si g renvoie Nothing, calculez h. Si l’un d’entre eux calcule Just a, arrêtez la chaîne. Et […]

Est-ce que l’avenir dans Scala est une monade?

Pourquoi et comment est spécifiquement un Scala Future pas une Monade? Et est-ce que quelqu’un pourrait le comparer à quelque chose qui est une Monade, comme une Option? La raison pour laquelle je pose la question est le Guide du Néophyte de Scala, 8ème partie: Bienvenue dans le futur, de Daniel Westheide, où j’ai demandé […]

Définir une nouvelle monade dans haskell ne déclenche aucune instance pour Applicative

J’essaie de définir une nouvelle monade et je reçois une erreur étrange newmonad.hs newtype Wrapped a = Wrap {unwrap :: a} exemple Monad Wrapped où (>> =) (Wrap x) f = fx return x = Wrap x main = do putStrLn “yay” $ ghc –version Le système de compilation Glorious Glasgow Haskell, version 7.10.1 $ […]

ST Monad == odeur de code?

Je travaille sur l’implémentation de l’algorithme UCT dans Haskell, ce qui nécessite beaucoup de jonglage de données. Sans entrer dans trop de détails, c’est un algorithme de simulation où, à chaque “étape”, un nœud feuille dans l’arbre de recherche est sélectionné en fonction de certaines propriétés statistiques, un nouveau nœud enfant est construit à cette […]

Pourquoi n’y a-t-il pas de transformateur IO dans Haskell?

Toutes les autres monades sont livrées avec une version transformateur, et d’après ce que je sais, l’idée d’un transformateur est une extension générique des monades. Après la construction des autres transformateurs, IOT serait quelque chose comme newtype IOT ma = IOT { runIOT :: m (IO a) } pour lequel je pourrais inventer des applications […]

Pourquoi des monades? Comment résout-il les effets secondaires?

J’apprends le Haskell et j’essaie de comprendre les Monades. J’ai 2 questions D’après ce que j’ai compris, Monad n’est qu’une autre classe qui déclare des moyens d’interagir avec les données à l’intérieur de «conteneurs», y compris Maybes, Lists et IOs. Il semble astucieux et propre d’implémenter ces 3 choses avec un seul concept, mais en […]

Différence entre Monad et Applicative dans Haskell

Je viens de lire ce qui suit de typeclassopedia sur la différence entre Monad et Applicative . Je peux comprendre qu’il n’y ait pas d’ join à Applicative . Mais la description suivante me semble vague et je ne pouvais pas comprendre exactement ce que signifie “le résultat” d’un calcul / action monadique. Donc, si […]

E / S pré-monadiques Haskell

Je me demande comment les E / S ont été réalisées à Haskell à l’époque où IO monad n’était toujours pas inventé. Tout le monde connaît un exemple. Edit: Est-ce que les E / S peuvent être faites sans IO Monad dans Haskell moderne? Je préfère un exemple qui fonctionne avec le GHC moderne.

Si retourner a = retourner b alors a = b?

Pouvez-vous prouver que si return a = return b alors a=b ? Quand j’utilise = , je veux dire dans le sens des lois et des preuves, pas dans le sens de la classe Eq . Chaque monade que je connais semble le satisfaire, et je ne peux pas penser à une monade valide qui […]

Qu’est-ce qu’une monade en PF, en termes catégoriques?

Chaque fois que quelqu’un promet “d’expliquer les monades“, mon intérêt est piqué, pour être remplacé par la frustration lorsque la prétendue “explication” est une longue liste d’exemples terminés par une remarque désinvolte selon laquelle “la théorie mathématique” idées “est” trop compliqué à expliquer à ce stade “. Maintenant, je demande le contraire. J’ai une solide […]