gusty / FsControl

[ARCHIVED] FsControl in now included in FSharpPlus https://fsprojects.github.io/FSharpPlus
Apache License 2.0
105 stars 16 forks source link

Merge Alternative with MonadPlus. #36

Closed gusty closed 9 years ago

gusty commented 9 years ago

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.

gusty commented 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.