Даже в таких случаях она помогает. Потому что если я вижу
(++) :: [a] -> [a] -> [a]
я понимаю, что:
1. На входе - два списка с элементами одного и того же типа.
2. На выходе - один список с элементами того же типа.
А без костылей ты, конечно, не поймёшь, что сложение даст те же типы.