Per my exploration on the indexed capability design pattern (or indexed finally tagless pattern?), a default implementation (i.e. IxExceptT) for IxMonadError cannot be defined because ibind always assumes that some forward progress is made. However, if we treat Indexed as a monad whose indices don't change when normal bind is used, we can then use regular monad transformers without issue.
Per my exploration on the indexed capability design pattern (or indexed finally tagless pattern?), a default implementation (i.e.
IxExceptT
) forIxMonadError
cannot be defined becauseibind
always assumes that some forward progress is made. However, if we treatIndexed
as a monad whose indices don't change when normalbind
is used, we can then use regular monad transformers without issue.So I propose adding such instances.