Open
Description
Coming from Scala's pattern matching, I'm a bit confused what the library is doing. In Scala, pattern matching performs validation, and whether something matches is optional. Picking up on the email example, how can I actually validate whether the input type satisfies the criteria for unwrapping the values?
match("not a valid email string"):
email(name, domain):
echo &"Valid email: {name}@{domain}"
_:
echo "not a valid email"
Specifically, how should I express that s.split('@', 1)
may or may not work? Is it only possible to unwrap things unconditionally with this library or is there a mechanism for expression optional matches?
My expectation from Scala were to write an unapply
function (what is called unpackers here), which can return either
- a bool for direct value matching
- an
Option[T]
for unwrapping a single value, or - an
Option[(T, ...)]
for unwrapping multiple values.
For matching an email for instance, theunapply
implementation would get an input string, and returnsome((name, domain))
only ifs.split('@', 1)
is valid.