Je souhaite dire qu'une certaine monade st paramétrée fonctionne avec une mémoire régulière, mais une sous-classe de mon monade paramétrée devrait imposer une contrainte supplémentaire sur le type de mémoire. Dans le code:Haskell typeclass inheritance et typeclass paramétrique
class Memory m where
...
class State st where
unit :: Memory m => a -> st m m a
bind :: (Memory m1, Memory m2, Memory m3) => st m1 m2 a -> (a -> st m2 m3 b) -> st m1 m3 b
class RMemory m where
...
class State st => RState st where
-- no operators
maintenant mon problème est que je veux imposer que chaque fois (RState st) est vrai, dans la définition de (Etat st) La mémoire est remplacé par RMemory; cela transformerait l'état en quelque chose de paramétrique dans la classe de type de sa mémoire. Cela peut-il être fait?