如何在没有外部接口的情况下实现类似 Eff 的 monad

How to implement an Eff-like monad without foreign interface

我有兴趣在 PureScript 中实现类似 Freer Monads, more Extensible Effects 的东西,但使用行而不是开放联合(我想这是可能的)。

但是,我无法定义没有 foreign import 的种类。我希望能够做类似的事情:

kind X
data Y :: # X -> Type -> Type

data Z :: X

这是我能做的事还是我应该寻找其他方法?

Nathan Faubion 使用行多态性、变体和代理实现了可扩展效果,称为 purescript-run