типы нужны для того, чтоб люди писали людям "есть такая штука и ведёт она себя так", а компилятор путём некоторых метаданных в виде синтаксиса языка мог понимать ограничения, которые пишут люди.
Ещё типы могут помогать выводить всякий полезный код
я, конечно, понимаю, что после хаскеля трудно понимать, что имена это не просто номера аргументов в буквенной системе, но в других языках им стараются давать смысл