Closed gusty closed 9 years ago
Alternative, MonadPlus and ArrowPlus were merged.
Monoid remains as separate thing not just because its kind is different (which here is technically not really an issue) but because implementation in theory may differ, Option<'T>
is a clear example.
Alternative and MonadPlus implementations are by convention the same. In short an Alternative is an Applicative which is also a Monoid and a MonadPlus is a Monad which is also a Monoid. But here we have no Higher Kinds and no real Type Classes, just Methods so I don't think there is a value of having them separately. Moreover we should evaluate merging them with ArrowPlus and may be even with Monoid as well, but I think it might be a case when an instance for Monoid and MonadPlus/Alternative is not the same implementation. Indeed instances for
Option<'T>
are different.For ArrowPlus I don't know but I guess they will be the same as Alternative/MonadPlus.