-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Labels
Description
For ExtCore v1.0 -- should we support both the Result<_,_> and Choice<_,_> type for error-handling, or should we drop Choice<_,_> and use only Result<_,_>?
Pros/cons of supporting Result<_,_> only:
- 👍 Smaller code size, less maintenance work (long-term)
- 👍 Just one way of doing things -- maybe simpler for less-experienced F# devs
- 👎
Result<_,_>is a struct, so doing a blanket replacement throughout code may hurt performance in cases where aResultis created wrapping a large struct and thereby induces expensive struct copies. - 👎 Eliminating support for
Choice<_,_>breaks backwards-compatibility with code written against current/past versions of ExtCore. Users of the library will have to to make non-trivial changes to their code in order to upgrade to ExtCore v1.0.
Pros/cons of supporting Result<_,_> and Choice<_,_>:
- 👍 Provides backwards-compatibility for code already written against current/past versions of ExtCore. Users should be able to (with the exception of the breaking changes defined in ExtCore v1.0 #47) simply upgrade to ExtCore v1.0 when it's released.
- 👍 Users can still choose between
Result<_,_>andChoice<_,_>and use whatever best fits their needs. - 👎 Adds additional complexity to ExtCore -- wherever we support error-handling within functions, we now need to implement those functions twice (once for
Result, once forChoice). This is transitive as well -- any functions that call these functions also need to be implemented twice, etc.
Reactions are currently unavailable