Dependent types are types that depend on values. Very few languages support them - examples include Agda, ATS, Coq, Epigram, Scala (by path-dependent-types, a close variant) and Idris which aspires to produce system-level quality native code.

- Stackoverflow.com Wiki