OP: a question about some of your earlier work. In particular, I'm reading through your "A Monad For Reactive Programming, Part 1". https://www.fpcomplete.com/user/agocorona/a-monad-for-reacti...
I see a lot of higher-rank types, like this:
data Event = forall a. Event EvType a
as opposed to: data Event a = Event EvType a
These mean different things. In the former, an Event has to be able to hold any a, and that doesn't really make sense (unless I'm misinterpreting something) because the only value that inhabits all types a is undefined/bottom.Or is that what you want? Is there a reason why you use higher-rank types (which make my brain hurt, require a lot of language extensions, etc.) rather than parameterized types? If so, could you spell that out?
Another example is this:
data EventF = forall m b c. EventF (b → Transient m c)
Again, I'm not really familiar with what you're doing so it's quite possible that using higher-rank types is exactly what you want (see: ST Monad and Lenses, where rank-2 types are crucial). I'm just having a hard time seeing it.Thanks!