Releases: bfren/wrap
v1.2.1
v1.2.0
Breaking changes
- Moving AddWrapConverters to be an extension of IList (#40)
Major changes
- Using generic Monad ModelBinderProvider (#41)
Minor changes
- Updating packages (#34 & #51)
- Converting to use slnx (#36)
- Expanding test coverage (#44)
- Adding explicit implementation of IWithId.Id (#48)
Development updates
- Updating workspace to support coding in VS Code (#46)
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Breaking changes
- Bringing Json implementation together in All project (#12)
- Major updates to IEnumerable extension methods and features (#13)
- Serialise Numeric ID values as numbers (#14)
- Renaming IUnion / Union types (#22) - now IMonad / Monad
- Renaming function args for If extensions (#29)
- Improving Id interfaces for use in entities (#31)
Major changes
- Enabling LINQ queries containing both Maybe and Result (#4)
- Improving object Wrap (#18)
- Improving performance of F.Format (#24)
Minor changes
- Improving test coverage (#6)
- Enabling package validation (#7)
- Fixing tests (#16)
- Fixing F.Format when passed a single value (#19)
- Using async keyword to simplify asynchronous calls (#27)
Full Changelog: v1.0.0...v1.1.0
v1.0.0
v1.0.0 Release
Taken from the wiki homepage.
Monad Marvels
Wrap C# values and objects in a variety of monads:
Maybe<T>- no more null! Values can beSome<T>containing a value, orNoneResult<T>- no more exceptions! Values can beOk<T>containing the value of a successful operation, orFailurecontaining information about why the operation failedId<T>- no more primitive IDs! Various types are provided for ID asGuid,int/uintorlong/ulong
Underlying all those types is IUnion<T> - the base interface that all the monads inherit from, containing one property: T Value. Also we have IEither<TLeft, TRight> which is the base interface for Maybe<T> and Result<T>: the 'left' value is the invalid / error value, and the 'right' value is the valid / success value.
This enables a functional style where pure functions can be joined / linked together to compose more complex functions, using extension methods like .Map() and .Bind().
Linq Loveliness
Where Maybe<T> and Result<T> really shine is when you get into Linq syntax, which enables a sequence of operations to be joined together - as soon as one fails the others are short-circuited, saving CPU cycles. For example:
from db in Db.ConnectAsync(...)
from query in BuildQuery(...)
from posts in db.QueryPosts<T>(query ...)
select posts;Assuming those three functions all return Result<T> the Linq query gives you a Result<T> object where T is the type of whatever you select.
Check out the source code for more info - I will expand the wiki with more info as and when I have time.
v1.0.0-beta.26012610
Full Changelog: v1.0.0-beta.26012605...v1.0.0-beta.26012610
v1.0.0-beta.26012605
Full Changelog: v1.0.0-beta.26012604...v1.0.0-beta.26012605
v1.0.0-beta.26012604
Full Changelog: v1.0.0-beta.26012514...v1.0.0-beta.26012604
v1.0.0-beta.26012514
Full Changelog: v1.0.0-beta.26012511...v1.0.0-beta.26012514
v1.0.0-beta.26012511
Full Changelog: v1.0.0-beta.26012410...v1.0.0-beta.26012511
v1.0.0-beta.26012410
Full Changelog: v1.0.0-beta.26012406...v1.0.0-beta.26012410