-
Notifications
You must be signed in to change notification settings - Fork 104
Description
I think for V2.0 we can start discussing features here, before moving to a formal project.
What comes to my mind at the moment is:
-
Remove subsumption from Applicatives: Right now
seq"eats" all custom types implementingseq -
Same for Traversable, same situation: although this might not require a breaking change (todo find out)
-
Implement IEnumerable for Vectors, now that (1) has to be done.
-
New
ListTmonad transformer, possibly newSeqTas well, coded using a similar technique as the one used for Free Monads. -
Review computation expressions: autosense will be removed but we have to do something to make it easy for users to understand why a strict monad can't be used with the non-strict CE. Maybe make compilation fail when calling a TryWith?
-
Add ValueTuple, ValueTask and other latest addition to the framework. We can require a higher framework version
-
Consider suggestions by @dsyme regarding using the return type for type inference.
Am I missing something?
EDIT
-
Better task support (maybe an intermediate type like
Stepwith conversions to/from Task and its use in Bind an other methods for task). -
Consistent type parameters order, this would need to swap type parameters in
Validation<'err,'t>toValidation<'t,'err>. -
Revisit sequential vs non-sequential applicatives for types like
Result(right now map is sequential) and for Matrix (not sure if the current applicative derives from Monad). -
Implement a mechanism for Delay/Run strict CE like task, so errors before the first bind are included into the task workflow.
-
Prioritize operators instead of static members for SRTP defaults, for instance the default for map should be
<!>so user types can be used without F#+