Size: a a a

Compiler Development

2021 June 20

EP

Egor Pugin in Compiler Development
а как надо?
источник

[

[BRM]White Rabbit in Compiler Development
как в хаскеле
источник

K

Kir in Compiler Development
Мне нравится как в окамле/хаскелле
источник

[

[BRM]White Rabbit in Compiler Development
о, я провидец
источник

K

Kir in Compiler Development
источник

DP

Dmitry Popov in Compiler Development
Генерики: тайпчекаются сами по себе, без подстановки конкретных типов. Хорошо умеют в модульность. Плохо умеют в инлайнинг.
Шаблоны: тайпчекаются после подстановки, хороший инлайнинг, фиговая модульность, распухающий код.
источник

ВМ

Виталий Медоваров... in Compiler Development
Почему это генерики плохо умеют в инлайнинг? В чём сложность?
источник

DP

Dmitry Popov in Compiler Development
Традиционно они один раз компилятся, вместо того чтобы для каждого типа-параметра заново
источник

ВМ

Виталий Медоваров... in Compiler Development
Кажется что в случае генериков какого-нибудь раста это не так
источник

DP

Dmitry Popov in Compiler Development
Ну и штуки вроде полиморфной рекурсии требуют униформного представления
источник

DP

Dmitry Popov in Compiler Development
У раста реализация ближе к шаблонам, да
источник

DP

Dmitry Popov in Compiler Development
На расте можно сделать object algebras / final tagless encoding?
источник

DP

Dmitry Popov in Compiler Development
Это то, что настоящие генерики умеют, а шаблоны фиг
источник

K

Kir in Compiler Development
> final tagless

Я из применений этого только mtl знаю. В отсутствие HKT-то (и тайпклассов) final tagless будет весьма неинтересным.
источник

DP

Dmitry Popov in Compiler Development
Там HKT не особо нужны. Даже Джава умеет
источник

AT

Alexander Tchitchigi... in Compiler Development
Умельцы и на (генерик) интерфейсах в Java делают. 😉
источник

h

hazer_hazer in Compiler Development
насколько я понимаю, не получится компилить один раз, если параметры не boxed. Тут либо делать мономорфизацию, либо боксить
источник

а

а это кто in Compiler Development
я тоже так думаю
источник

а

а это кто in Compiler Development
"Генерики" тоже могут мономорфизироваться, например в C#, Pascal, Rust
источник

а

а это кто in Compiler Development
То что вы назвали "Генерики" это конкретный пример генериков в Java
источник