Frank Thomas
In computer science and logic, a dependent type is a type that depends on a value. [...] In functional programming languages like ATS, Agda, Idris and Epigram, dependent types prevent bugs by allowing extremely expressive types.
Type-Driven Development with Idris
https://www.manning.com/books/type-driven-development-with-idris
Idris: http://www.idris-lang.org/