DEV Community

Cover image for PipeExtensions 1.3.0 Update
Winston Puckett
Winston Puckett Subscriber

Posted on • Edited on

PipeExtensions 1.3.0 Update

4 weeks ago to the day, I announced version 1.0.0 of PipeExtensions. If you want to learn more about what or why it is, here is the original announcement.

The original version lacked a few features which are now available. Here's what you can expect.

Dyadic and triadic function support

F# allows a user to pass a tuple of 2 or 3 arguments for those rare cases when a monadic function is not the best way to describe what's going on. PipeExtensions now has that functionality.

Here's a contrived sample:

// Function with 2 parameters:
bool Validate(int id, string name)
  => id > 0 && name != "invalid";

var isValid = (1, "Charlie").Pipe(Validate);

// Function with 3 parameters:
bool Validate(int id, string name, short age)
  => id > 0 && name != "invalid" && age < 175;

var isValid = (1, "Charlie", 57).Pipe(Validate);
Enter fullscreen mode Exit fullscreen mode

Pass CancellationTokens regardless of parameter number.

Whether you're using a function with one, two, or three parameters, you can always add the CancellationToken to the right of the function.

// Function with 2 parameters and a CancellationToken:
async Task<bool> Validate(int id, string name, CancellationToken cancellationToken)
  => await Task.Run(() => id > 0 && name != "invalid", cancellationToken);

var isValid = await (1, "Charlie").PipeAsync(Validate, cancellationToken);

// Function with 3 parameters:
async Task<bool> Validate(int id, string name, short age, CancellationToken cancellationToken)
  => await Task.Run(() => id > 0 && name != "invalid" && age < 175, cancellationToken);

var isValid = await (1, "Charlie", 57).PipeAsync(Validate, cancellationToken);
Enter fullscreen mode Exit fullscreen mode

Why pass it on the right hand side? Because this is how Linq chooses to do things:

var example = await myList.FirstAsync(item => item.Id == 0, cancellationToken);
Enter fullscreen mode Exit fullscreen mode

Install PipeExtensions for yourself. Find the package on Nuget

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up