I have to the conclusion that for beginners, the less type annotations the better. Let the compiler figure things out on its own, and let library writers worry about making sure all of the mathematics on the generic types are sound.
See Is a simple, beginner style with named parameters and no unnecessary type annotations acceptable? and discussion.