Вы просто спросили "какой тип должен быть?", так будто там типа не присвоишь, вопрос риторический, слушатель в тупике. Но написать руками тип не так уж сложно
я написал "какой тип должен выводиться?", а не "какой тип должен быть?". Потому что в зависимости от контекста полезным можем быть выводить как более-менее общий зависимый тип, так и тип без зависимостей. И потом показал, что бывает, если всегда по умолчанию выводить общие зависимые типы. Поинт в том, что тайпчекер не должен этим заниматься, это слишком неявно и может быть слишком дорого. Этим должна заниматься тулза, встроенная в компилятор, которая генерирует код по запросу от юзера, и чтобы юзер мог указать, какой тип он хочет, чтобы вывелся