]> Git — Sourcephile - comptalang.git/commit
Ajout : Control.Monad.Classes.{StateFix,StateInstance}.
authorJulien Moutinho <julm+hcompta@autogeree.net>
Fri, 27 May 2016 01:33:24 +0000 (03:33 +0200)
committerJulien Moutinho <julm+hcompta@autogeree.net>
Fri, 27 May 2016 02:27:52 +0000 (04:27 +0200)
commit23430e85eebcb7dc5977136455ca999b646bf2fc
treee05151616343eb74edfd08d8e69b2128837098a8
parent70c42705163b43a8390e796780dd06509da09fec
Ajout : Control.Monad.Classes.{StateFix,StateInstance}.

Malheureusement méconnue, monad-classes semble,
comparé à mtl et aux autres approches
pour gérer des piles de monades (Monad stack) :
simple conceptuellement, facile à utiliser
et performant à l’exécution.

Cet ajout de StateFix et StateInstance est destiné
à gérer les empilements de monades nécessaires
à Calculus.Lambda.Omega.Implicit :
- StateFix permet de paramétrer l’état (State)
  d’une monade à état (MonadState) de la pile,
  par la pile de monades elle-même
  (utile en l’occurence pour maintenir
  dans l’état d’une monade d’état de la pile de monades
  servant à la résolution des contraintes d’inférence :
  une pile des contraintes d’inférence à résoudre,
  où chaque contrainte d’inférence référence
  la valeur de la pile de monades servant à la résoudre).
- StateInstance permet de collecter les états
  des monades à état de la pile de monades
  dont le type est une instance d’une classe de types (class) donnée
  (utile en l’occurence pour tracer (log) des informations
  sur les états d’une pile de monades).

Chapeau bas notamment aux auteurs de monad-classes
(Roman Cheplyaka et Andres Löh)
pour avoir trouvé une aussi élégante et flexible
approche des effets extensibles :
https://ro-che.info/articles/extensible-effects
calculus/Control/Monad/Classes/EffectsFix.hs [new file with mode: 0644]
calculus/Control/Monad/Classes/Instance.hs [new file with mode: 0644]
calculus/Control/Monad/Classes/StateFix.hs [new file with mode: 0644]
calculus/Control/Monad/Classes/StateInstance.hs [new file with mode: 0644]
calculus/hcompta-calculus.cabal