Notably, the m >>= f unfolding looks something like fromViewT <a loop breaker>. That means that if m is itself fromViewT whatsit, we won't be able to rewrite toViewT (fromViewT whatsit) to whatsit. That seems sad.
I haven't been able to figure out a way to turn lift m >>= lift . f to lift (m >>= f). Is there some way we can arrange things so that falls out?
Is there something we can do about it? Also: it seems kind of random what's INLINE and what's INLINABLE. Let's figure out what it should be and why and write notes.
Notably, the
m >>= funfolding looks something likefromViewT <a loop breaker>. That means that ifmis itselffromViewT whatsit, we won't be able to rewritetoViewT (fromViewT whatsit)towhatsit. That seems sad.I haven't been able to figure out a way to turn
lift m >>= lift . ftolift (m >>= f). Is there some way we can arrange things so that falls out?Is there something we can do about it? Also: it seems kind of random what's
INLINEand what'sINLINABLE. Let's figure out what it should be and why and write notes.