Compile-time memory safety using Liquid Haskell
haskellforall.com
haskellforall.com
Of course, the other popular approach is to use dependent types. I've recently run up against the limits of Haskell's type system in a number of projects, so I've been playing around with Idris. It's very cool to be able to promote arbitrary functions to the type level (and higher). The potential applications for static analysis are awesome.
I recommend everyone play around with cutting-edge type systems. Doing so has really influenced the way I program and do math. Haskell is pretty far up there, especially with standard GHC extensions (DataKinds etc.). Liquid Haskell, idris, agda, etc. are even more powerful. If you're coming from a C/Python/Java/etc. background like I did, you'll be totally blown away.
I am not at all telling people, "Switch from Liquid Haskell to Nuprl!". I'm providing perspective on the design space.
Lean, Coq and Agda all implement structural type theory.