Optional Chaining and the Try operator
I want to have them all: optional-chaining, unwrap and try operators.
Rust includes the try operator ? which is transformed into construction with return on the "fail" case, though it is possible to use and_then as an alternative to JS/C# ?. operator (optional chaining).
The other thing is that Jacy does not have the same syntax for macros as Rust because ! is reserved as postfix "unwrap" operator, thus expression like foo!(...) is std::ops::Unwrap(foo)(...) but not foo!(...) macro call.
By the way, it is possible to both use macros syntax with ! and have ! as postfix operator -- store macros in the values namespace (i.e. name foo! will collide with e.g. function foo), but I don't like this solution.
The other problem is that if we have ? as optional chaining, how do we use the "try" operator? (? in Rust).
Initials
I'd like to describe all the possible operators/ways to implement I see.
| Operator | Possible usage | 
|---|---|
? operator | Optional chaining / Try operator | 
?. distinct operator (. is included in ?.) | |
! operator | |
&. operator from Ruby (optional chaining, aka safe navigation) | |
?? | I want to use it for |