That's really awesome. Thanks for the explanation.
Dependent types is really about the ability to parameterise types over values, and reason on those values-dependent types.