Size: a a a

Compiler Development

2020 February 01

SM

Sailor Moon in Compiler Development
Alexander Vershilov
Создаётся universe тип (общее представление для любого значения "динамического типа"), которое отличается тегом. В haskell тег это просто номер конструктора
про Data.Dynamic знаю, но там надо to/from касты делать, неудобно
источник

AV

Alexander Vershilov in Compiler Development
Ну это совсем другой подход, ты там должен знать с чем ты работаешь и можешь проверить является ли тип ожидаемым. В общем-то это GHC.Any + словарик Typeable
источник

SM

Sailor Moon in Compiler Development
интересно, спасибо)
источник

AV

Alexander Vershilov in Compiler Development
Туда можно "сложить" любой тип, но работать обобщенно с такими типами и автоматически кастовать один в другой не выйдет, для этого нужно закрытая вселенная типов и правила отображения
источник

M

MaxGraey in Compiler Development
Alexander Vershilov
Много, "динамический" тип в любом динамическом языке реализован как тегированный тип с ограниченными вариантами
В питоне например. Есть много динамических ЯП где есть только один тип - dictionary. Это Lua например
источник

M

MaxGraey in Compiler Development
Динамическую типизацию можно строить не только на основе теггирования. Теггирование это лишь одна из опций
источник

M

MaxGraey in Compiler Development
В Lua например используется 1-битовый тег NaN-теггирования и только для ускорения работы с простыми типами, можно было бы обойтись и без этого
источник

M

MaxGraey in Compiler Development
а в остальном - это все объект, а объект это хэш-таблица
источник

AV

Alexander Vershilov in Compiler Development
Ну блин тип выше это именно это - тегирование + array + словарь
источник

AV

Alexander Vershilov in Compiler Development
Который и основывает universe тип, значениями которого является любое значение в языке
источник

M

MaxGraey in Compiler Development
как представить рекорд или кортеж?
источник

AV

Alexander Vershilov in Compiler Development
источник

AV

Alexander Vershilov in Compiler Development
?
источник

SM

Sailor Moon in Compiler Development
Alexander Vershilov
Много, "динамический" тип в любом динамическом языке реализован как тегированный тип с ограниченными вариантами
Почему с огриничеными вариантами?
В питоне например можно в рантайме в петле for классы создавать, и вообще незнаю в каком динамически типированом языке нельзя
источник

M

MaxGraey in Compiler Development
Sailor Moon
Почему с огриничеными вариантами?
В питоне например можно в рантайме в петле for классы создавать, и вообще незнаю в каком динамически типированом языке нельзя
Да именно
источник

AV

Alexander Vershilov in Compiler Development
Класс в таком языке это один из вариантов, в котором в поле class будет информация о классе
источник

M

MaxGraey in Compiler Development
нужна рефлексия
источник

AV

Alexander Vershilov in Compiler Development
Можно делать сколь угодно сложную систему рантайм тегов, это абсолютно ничего не меняет.
источник

AV

Alexander Vershilov in Compiler Development
Плохо "тут" слово тег воспринимают как int..
источник

M

MaxGraey in Compiler Development
Alexander Vershilov
Можно делать сколь угодно сложную систему рантайм тегов, это абсолютно ничего не меняет.
Как с помошью тега предаставить кортеж? Как представить вариативный массив?
источник