Skip to content

Releases: bfren/wrap

v1.2.1

20 Feb 12:08
276e2c2

Choose a tag to compare

Minor updates

  • Improving test coverage (#53)

Build updates

  • Adding multi-step workflows (#55)
  • Adding nupkgs to release (#57)

Full Changelog: v1.2.0...1.2.1

v1.2.0

17 Feb 17:58
dec9eb0

Choose a tag to compare

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

08 Feb 16:32
ee387d5

Choose a tag to compare

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

27 Jan 20:10
91ff99e

Choose a tag to compare

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 be Some<T> containing a value, or None
  • Result<T> - no more exceptions! Values can be Ok<T> containing the value of a successful operation, or Failure containing information about why the operation failed
  • Id<T> - no more primitive IDs! Various types are provided for ID as Guid, int / uint or long / 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

27 Jan 15:24
5a05026

Choose a tag to compare

v1.0.0-beta.26012610 Pre-release
Pre-release

v1.0.0-beta.26012605

26 Jan 20:53
2d9bf80

Choose a tag to compare

v1.0.0-beta.26012605 Pre-release
Pre-release

v1.0.0-beta.26012604

26 Jan 12:25
3e052e3

Choose a tag to compare

v1.0.0-beta.26012604 Pre-release
Pre-release

v1.0.0-beta.26012514

25 Jan 18:16
db3edf9

Choose a tag to compare

v1.0.0-beta.26012514 Pre-release
Pre-release

v1.0.0-beta.26012511

25 Jan 15:09
f4cf8a6

Choose a tag to compare

v1.0.0-beta.26012511 Pre-release
Pre-release

v1.0.0-beta.26012410

24 Jan 17:38
5196914

Choose a tag to compare

v1.0.0-beta.26012410 Pre-release
Pre-release