Or is it supposed to allow for some kind of ad-hoc polymorphism like:
func foo(x) string { match type(x) { char** : return “an array of strings” int : return “a number” default : return “not sure” } }
func foo(Type x_t, x_t x) string { match(x_t) { pointer_t(pointer_t(char_t)) : return ... ... } }
Or is it supposed to allow for some kind of ad-hoc polymorphism like:
And this gets transformed into something like: