Practical OCaml: A quick guide to GADTs and why you ain't gonna need them
Truth is that unless you are Jane Street and need to optimize the hell out of your compact arrays, or are writing a toy λ-calculus interpreter, you're probably better off without them.