2010-01-06 3 views
1

Если я создаю новый язык с типом вывода, без явных типов и без наследования классов, а затем хочу добавить наследование, то какие минимум дополнительные подсказки для компилятора, необходимые для разрешить неоднозначность типа при добавлении функции?получил запрос типа, хочу добавить наследование класса

Нужны ли имена классов?

EDIT

Тип-умолчанию разрушение прослеживается через присвоения по всей программе, включая между функциями.

OK в исходном языке, то есть имена классов, как MyTypeName1 от вещи, как:

myVariable1 = New(MyTypeName1) 
myVariable2 = New(MyTypeName2) 

и типы MyTypeName1 и MyTypeName2 выводятся для myVariable1 и myVariable2 соответственно. Но если мы хотим улучшить язык поддержки:

MyVariable3 = myVariable1 
MyVariable3 = myVariable2 

, которые могут быть прослежены через код (myVariable3 теперь может содержать два типа, которые предположительно находятся в иерархии).

EDIT

Члены MyTypeName1 и MyTypeName2 выводятся из утверждений типа:

myVariable1.name="Fred" 
myVariable2.name="JX3009" 

Что делать, если name член в MyTypeName1 и в MyTypeName2 не быть в общем базовом классе? Что делать, если мы хотим иметь другое имя в MyTypeName1 и MyTypeName2 и ни одного в базовом классе? Есть ли элегантный способ рассказать компилятору, что делать/как обрабатывать? (Идея с типом вывода состоит в том, чтобы уменьшить типизацию, не увеличивая ее ...?)

Или нам нужно явно указать иерархию?

+3

Домашнее задание вопрос? –

+2

Джим: Если это так, я рад, что это не моя домашняя работа, потому что я действительно пытаюсь понять, о чем он говорит :) –

+1

Очень приятно пнуть вас, джентльмены. :) – martinr

ответ

1

Это поле загружается с результатами неразрешимости, но я забыл их все. Если вы хотите конфликтовать наследование с подтипированием, у вас нет проблем. Если вы хотите что-то более амбициозную (и это звучит так, как будто вы делаете), я бы взглянуть на учебник

  • Бенджамина Пирса Types and Programming Languages, которая будет охватывать основные результаты по ширине и глубине подтипа и как они делают или не играйте хорошо с типом вывода. (Я бы посмотрел сам, но моя копия работает.)

  • Fran & ccedil; ois Ptyier's PhD.

Еще одно имя для регистрации - Джо Уэллс, который несет ответственность за множество результатов неразрешимости в системах типов и языках программирования.

Каковы минимальные дополнительные намеки на компилятор, необходимые для разрешения неоднозначности типа?

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

Смежные вопросы