And I was hoping that was referring to this hyper: http://hyper.rs/
Optional typing is the sweet spot.
```
const whatIsFoo = match (foo) {
case : nil : "nothing, really"
case : string : "it's a string"
case : number | boolean : "it's bool or number"
case [ head, ...tail ] : string[] : `it's array of strings with head ${head} and tail ${tail.join(', ')}`
case { value } : { type: 'NodeFoo' } : `it's Node Foo with value ${value}`
default: "well, something else."
}```
Optional, structural algebraic type system with runtime support (mainly for `match ...` constructs) is IMHO the sweet spot.
It really makes a difference to have it. The analogy on top of my head is this: it's like a difference, when working on text processing code, to have regexp or do things by hand. Similar to regexps, above type system support, can cut necessary code by orders of magnitude and make it much more readable/reason about.
Quit looking for pots of gold and start panning for nuggets.