我想说,某个参数化的 monad st 可以使用常规内存,但是我的参数化 monad 的一个子类应该对内存类型施加额外的约束。 代码如下:
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
现在我的问题是,我希望每当(RState st)为真时,在(State st)的定义内部将Memory替换为RMemory;这将使State成为其存储器类型类参数化的东西。这个能做到吗?