Неявное приведение типов, сабтайпинг и вывод типов
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.11 19:19
Оценка:
Глядя на кишки известного многим компилятора очередной раз пришел к мысли посещавших многих — неявное приведение типов идет в разрез с выводом типов. Особенно все становится печально в системах с иерархическими типами.

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

Так вот размышляя над этим любовным треугольником меня посетила очень простая мысль...

Мысль оказалось настолько проста, что я до сих пор думаю, что я что-то упустил в своих рассуждениях. Но, с другой стороны, рассуждения настолько просты, что в них трудно сделать ошибку.

И так, внимание, вопрос!

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

Чувствую, что в чем-то я не прав. Ведь это настолько просто, что если бы это было правдой, то многие давно бы реализовали этот подход на практике.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Неявное приведение типов, сабтайпинг и вывод типов
От: Jack128  
Дата: 31.08.11 19:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно ли рассматривать неявное приведение типов как вырожденный случай сабтайпинга


Хм, может я чего не понимаю, но разве с точки зрения вывода типов сабтайпин и неявный каст — это не одно и тоже?? сводить тайпкаст к наследованию — это как то странно выглядит, а вот считать, что наследование — это просто возможность скастить переменную к любому её предку — вполне логично. правда я не понимаю, чем тебе все эти рассуждения помогу. разве алго вывода типов упростится?? И вообще упомянутый Хиндли-Милнер будет работать например в языке без неявных кастов, но с наследованием?? В том же F# — не работает(как только появляются иерархии — нужно явно типы задавать)
Re: Неявное приведение типов, сабтайпинг и вывод типов
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.08.11 20:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Чувствую, что в чем-то я не прав. Ведь это настолько просто, что если бы это было правдой, то многие давно бы реализовали этот подход на практике.


А не получится ли у тебя граф приведений вместо дерева, там где ты этого не ожидаешь?
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.