Size: a a a

Compiler Development

2020 February 01

M

MaxGraey in Compiler Development
там есть такое понятие как hidden classes (хотя это скорее вопрос реализации)
источник

AV

Alexander Vershilov in Compiler Development
Проблема в том, что надо написать разумный data Dynamic с разумными правилами конвертации
источник

AV

Alexander Vershilov in Compiler Development
Тогда как в динамическом языке он обычно есть
источник

А

Алексей in Compiler Development
Нормальной динамики в языке без поддержки динамики не будет
источник

AV

Alexander Vershilov in Compiler Development
Т.е. чтобы сделать динамический edsl и встроить его в C/Haskell это вполне себе понятные действия, где нет особой магии. И дальше писать на таком языке, можно даже сделать что-то хитрое с опциональной типизацией (мы так делали когда R в Haskell встраивали). Мой поинт был в том, что писать так даже на достаточно сильно типизированном языке можно.
Но я согласен, что библиотеку придётся писать
источник

AV

Alexander Vershilov in Compiler Development
Алексей
Нормальной динамики в языке без поддержки динамики не будет
Будет конечно, разве, что на мосту между динамикой и статикой будешь писать ^._Value`/`^.re _Value и это достанет.

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

МБ

Михаил Бахтерев in Compiler Development
Alexander Vershilov
Т.е. чтобы сделать динамический edsl и встроить его в C/Haskell это вполне себе понятные действия, где нет особой магии. И дальше писать на таком языке, можно даже сделать что-то хитрое с опциональной типизацией (мы так делали когда R в Haskell встраивали). Мой поинт был в том, что писать так даже на достаточно сильно типизированном языке можно.
Но я согласен, что библиотеку придётся писать
Вопрос, однако, в том, как потом это всё будет выполняться. Для эффективности, всё равно, придётся делать компилятор или jit.
источник

AV

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

А

Алексей in Compiler Development
Alexander Vershilov
Будет конечно, разве, что на мосту между динамикой и статикой будешь писать ^._Value`/`^.re _Value и это достанет.

А мост будет нужен, чтобы переиспользовать библиотеки из статического языка
Ну это динамика типа Object в Java. В этом то и проблема, то что надо будет явно весь мир в динамику загонять
источник

А

Алексей in Compiler Development
Алексей
Ну это динамика типа Object в Java. В этом то и проблема, то что надо будет явно весь мир в динамику загонять
Что вообще не юзабельно
источник

AV

Alexander Vershilov in Compiler Development
Алексей
Ну это динамика типа Object в Java. В этом то и проблема, то что надо будет явно весь мир в динамику загонять
В динамическом языке динамика такого же типа, засахаренная
источник

А

Алексей in Compiler Development
Ну и типы в рантайме не выйдет создать к примеру
источник

А

Алексей in Compiler Development
Alexander Vershilov
В динамическом языке динамика такого же типа, засахаренная
Без этого сахара умереть можно
источник

M

MaxGraey in Compiler Development
Простой пример как c Variadic типом описать такой кейс:

var a = { b: 1 }:
a.foo = a
a.foo.foo = a.b

?
источник

PM

Pavel Meledin in Compiler Development
Михаил Бахтерев
Ну. Вот физики написали себе Julia. Очень ей довольны. Думаю, если целевая аудитория загружена другой математикой, то им заходят динамические языки, потому что не надо вкладывать существенные усилия ещё и в сложную теорию языка (и не интересно, и времени нет). Ещё подтверждения гипотезы: математики написали себе Sage на Python, у числовых теоретиков популярна Scheme, датасаейнтисты сидят в Python, финжиры используют APL.
а финжиры - это финансовые инженеры ? а-ля кванты и прочие связанные с моделированием моделей инвестирования ?
источник

AV

Alexander Vershilov in Compiler Development
Михаил Бахтерев
Вопрос, однако, в том, как потом это всё будет выполняться. Для эффективности, всё равно, придётся делать компилятор или jit.
Тоже согласен, мне кстати жалко, что проект haskell+r не дошёл до этого момента и было достаточно того, что сделали. А так были планы как можно при компиляции практически полностью исключить наличие динамической части в R.
источник

AV

Alexander Vershilov in Compiler Development
MaxGraey
Простой пример как c Variadic типом описать такой кейс:

var a = { b: 1 }:
a.foo = a
a.foo.foo = a.b

?
Вот в том, типе, что выше и со стандартной оптикой это будет
let a0 = Dictionary (HashMap.fromList [("b", 1)])
    a1 = a & _Dictionary %~ HashMap.insert "foo" a
    a2 = a  & _Dictionary . at("foo") . _Dictionary . at("foo") %~ b


Но в библиотеке может есть и комбинаторы поудобнее
источник

M

MaxGraey in Compiler Development
MaxGraey
Простой пример как c Variadic типом описать такой кейс:

var a = { b: 1 }:
a.foo = a
a.foo.foo = a.b

?
Это можно было бы через hash таблицы конечно же:
var a = table({ b: 1 })
a.set({ foo: a })
a.set({ foo: table({ foo: a.b }) })
источник

AV

Alexander Vershilov in Compiler Development
Тип выже одним из конструкторов содержит hash таблицу
источник

AV

Alexander Vershilov in Compiler Development
= Dictionary !(HashMap Text Dynamic)
источник