Home

Awesome

DiscriminatedUnion

Implementation of Discriminated Union and Pattern Matching in C#.

string outputValue = x.Match<String>()
						.Case(c => c == "Test", v => "It's Test!")
						.Case(v => "It's Not Test!")
						.Else(() => "It's None!")

or

var x = new Union<string, int>(100);

// the type annotations below are optional and only added for clerity.
string value = x.Match<string>()
	.Case((string v) => v)
	.Case((int c) => c == 100, (int v) => "Keeping It 100.")
	.Case((int v) => "Tea?")
	.Else(() => "Nothing");

Assert.Equal("Keeping It 100.", value);