At Strange loop 2017, a wandered into a talk where I saw some code that deeply surprised me. The code could have been python if you squinted, passing dictionaries around, no type annotations anywhere.
Yet key look up in the dictionary was validated at compile time. It was a compile time error to access elements that didn’t exist. Also the dictionary was heterogeneous, the elements had different types, and it was all inferred and validated at compile time.
What I was seeing was Dependent types in Haskell. In today’s interview Stephanie Weirich explains her efforts to add dependent types to haskell and how that example worked.