The stricter and more advanced a type system is, the more this comes close to the truth. Of course, no compiler can check that the function you implemented is the function you wanted to implement, but it can quite check that it can reliably compute the function you typed in.
The question hinges, on how much errors in your program express themselves as type errors too.
The question hinges, on how much errors in your program express themselves as type errors too.