Late party, this answer is mostly shameless.
Sam Lindley and I wrote an article about Hasochism , about the pleasure and pain of obsessive programming at Haskell. This gives many examples of what is now possible in Haskell, and draws comparison points (both favorable and not) with the generation of Agda / Idris in languages with a typical type.
, , Sam. (, mergesort), , : , ( , ) .
(, ). , . ( ) :
if b then t else e = > if b then e else tif b then t else e = > tif b then t else e = > e
b, , ( ) , : , b t, e, .
- . ,
f :: forall a. r[a] -> s[a] -> t[a]
a: a, , - , . , (, ) ().
GADT, , . n; , ; , n . , , , -, , . , , , .
, . 1 ( , , s -> t t -to-the- s) , : if 0, ; 1, -; 2, ; , . - , , , . : . , , , , , : . .