dmzlj -

топ 100 блогов dmzlj19.08.2010 Вот и первые проблемы начались. В языках с синтаксисом наличие жестко определенных типов вполне естественно --- есть синтаксические конструкции, есть типы данных, которые они порождают:

[a, b, c, ...]  ;;  список  TList(typeof(a))
(a,b,c)         ;; 3-кортеж TTuple(typeof(a), typeof(b), typeof(c))


допустим у нас язык без синтаксиса, и каждая конструкция имеет семантику вызова функции:

(list a b c d) ;; список
(tuple a b c)  ;; 3-кортеж


возникают следующие вопросы:

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

Далее, если давать переопределять эти функции, то что происходит с типами данных, которые они возвращают? Количество основных типов, о которых знает компилятор и к которым сводятся остальные --- оно все равно фиксировано.

Даже если дать произвольно определять конструкторы, все равно должны быть какие-то вызовы, которые будут вызваны в этих конструкторах, что бы вернуть объект того или иного основного типа.

Если же не давать переопределять конструкторы данных, жестко определяя их синтаксис, то почему бы тогда не зафиксировать и остальные формы (define, let, if-then-else, etc), перекладывая проверку их корректности на парсер?

А можно еще рассматривать язык программирования как язык и API для генерации AST. Язык для генерации AST вполне может иметь семантические отличия от того языка, который представляетcя этим AST, т.е. например иметь динамическую типизацию и функции с переменным количеством параметров.

Оставить комментарий

Архив записей в блогах:
Привет. Меня зовут Настя. Мне 30 лет. Я живу в пригороде Киева с мужем, двумя детьми (Матвей и Майя) и свекровью. Я веду блог о моде, и как мне кажется, был интересным мой день, каким он бывает во время нашей локальной недели моды. Но до Недели моды еще далеко. Поэтому расскажу вам про ...
Смотреть это видеохочу посмотреть фильм по которому сделан клип:) Николь ...
Куда? в роллы! Оказалась слишком солёная. ...
Купили рыбку (большую!), овощи, сыр Рыбку запекла я в фольге. А гарниров было два в одной посуде в одной духовке: 1. Картошка с грибами и луком 2. Овощи: баклажан, кабачок, красный перец, помидор Потом оба гарнира были засыпаны сыром. Готовый гарнир (два гарнира) под катом: ...
Допрос адвокатом врача: - Перед вскрытием вы замеряли его пульс? - Нет. - Давление? - Нет. - Дыхание? - Нет. - То есть на момент начала процедуры вскрытия пациент, возможно, был еще жив? - Нет. - Откуда у вас такая уверенность? - Его мозг плавал в банке у меня на столе. - И все же ...