Глядя на кишки известного многим компилятора очередной раз пришел к мысли посещавших многих — неявное приведение типов идет в разрез с выводом типов. Особенно все становится печально в системах с иерархическими типами.
Вывод типов, неявное приведение типов и сабтайпинг — это как возможность решить задачу быстро, качественно и недорого — можно, но только если выбрать два из возможных варианта

.
Так вот размышляя над этим любовным треугольником меня посетила очень простая мысль...
Мысль оказалось настолько проста, что я до сих пор думаю, что я что-то упустил в своих рассуждениях. Но, с другой стороны, рассуждения настолько просты, что в них трудно сделать ошибку.
И так, внимание, вопрос!
Можно ли рассматривать неявное приведение типов как вырожденный случай сабтайпинга (наследования, если угодно для простоты восприятия)? Ведь если внести информацию о неявных привдеениях типов в систему типов, то конфликт между сабтайпингом и приведением типов исчезнет и можно будет производить вывод типов по примитивным алгоритмам вроде Хиндли-Милнера и не иметь никаких проблем с приведением типов.
Чувствую, что в чем-то я не прав. Ведь это настолько просто, что если бы это было правдой, то многие давно бы реализовали этот подход на практике.