Hello!

I've created a pattern matching library for D. Still experimental, but might be an interesting approach.

https://github.com/Zero-error-no-warning/TrapFlow


```D
import trapflow;

// Basic usage
auto x = 10.flow!string
    .trap[5]("5")
    .trap[$ <= 4](" <= 4")
    .trap[10,12]("10 12")
    .trap[15 .. 20]("15 16 17 18 19")
    .trap[$]("other")
    .result;
// Result: "10 12"

struct Inner { int a; string b; }
struct Outer { Inner s; int t; }

auto x = Outer(Inner(3,"three"), 33).flow("default")
    .trap[$[$[1,"one"], $]]("case 1")
    .trap[$[$ , 22]]("case 2")
    .trap[$[$[$,"three"], 33]]("case 3")
    .result;
// Result: "case 3"

// FizzBuzz
foreach(idx; 1..10) {
    auto fizzbuzz = tuple(idx % 3, idx % 5).flow!string
        .trap[$[0,0]]("FizzBuzz")
        .trap[$[0,$]]("Fizz")
        .trap[$[$,0]]("Buzz")
        .trap[$](idx.to!string)
        .result;
}
```


Looking forward to feedback :)

Reply via email to