Size: a a a

2020 May 15

SP

Stanislav Popov in rust_offtopic
Nick Linker
Так получается, что добавление кейса к АДТ вызовет множество модификаций по обработке этого кейса во всех местах с паттер-матчингом.

А дядька Мартин хочет, чтобы ты сбоку нарисовал какую-то плюху, и у тебя автоматически завёлся новый кейс.
Так вот я утверждаю, что дядя Мартин недооценил значение паттерн матчинга, и модифицировать существующую систему ничуть не больнее, если это безопасно.
они называют это как то даже. coding problem чтоли
источник

ГС

Георгий Седометов... in rust_offtopic
Stanislav Popov
они называют это как то даже. coding problem чтоли
expression problem, скорее
источник

G

Gymmasssorla in rust_offtopic
Георгий Седометов
expression problem, скорее
+
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
они называют это как то даже. coding problem чтоли
Так у Мартина тоже нет решения expression problem.
источник

DS

Doge Shibu in rust_offtopic
Она решает либо через tagless final, либо через object algebra
источник

DS

Doge Shibu in rust_offtopic
Поэтому все быстро читать статьи Олега и вдохновляться
источник

G

Gymmasssorla in rust_offtopic
Doge Shibu
Поэтому нужно и не АТД, и не ООП интерфейсы, а final tagless стиль, который решает одновременно обе проблемы.
а чисто теоретически если бы вместо АДТ в расте были алгебры объектов/finally tagless, было бы лучше/хуже?
источник

G

Gymmasssorla in rust_offtopic
автоматически имею ввиду
источник

ГС

Георгий Седометов... in rust_offtopic
так на растовых трейтах нормально делается ТФ, насколько я понимаю
источник

DS

Doge Shibu in rust_offtopic
Gymmasssorla
а чисто теоретически если бы вместо АДТ в расте были алгебры объектов/finally tagless, было бы лучше/хуже?
Было бы странно.

Решать expression problem обычно нужно во всяких eDSL, в обычном коде оно не столь часто нужно. Хотя от макроса конвертора из АТД в ТФ и обратно, я бы не отказался
источник

DS

Doge Shibu in rust_offtopic
Георгий Седометов
так на растовых трейтах нормально делается ТФ, насколько я понимаю
Да, но без HKT много не выразишь красивого
источник

NL

Nick Linker in rust_offtopic
Doge Shibu
Поэтому нужно и не АТД, и не ООП интерфейсы, а final tagless стиль, который решает одновременно обе проблемы.
Нет, в 99% случаев нам не нужно решать expression problem. Это можно оставить у каких-то главных доменных классов, которые скорее всего будут расширяться и модифицироваться, а остальное сделать на АДТ.
источник

B

Bogdan in rust_offtopic
А в тайпскрипте есть newtype?

@enomad
источник

DS

Doge Shibu in rust_offtopic
Простые кейсы - да, а вот всякую няшноту, где можно переиспользовать систему типов языка хоста в своей eDSL - нет
источник

DS

Doge Shibu in rust_offtopic
Nick Linker
Нет, в 99% случаев нам не нужно решать expression problem. Это можно оставить у каких-то главных доменных классов, которые скорее всего будут расширяться и модифицироваться, а остальное сделать на АДТ.
Ну это нужно прежде всего для библиотек различного рода
источник

G

Gymmasssorla in rust_offtopic
Doge Shibu
Было бы странно.

Решать expression problem обычно нужно во всяких eDSL, в обычном коде оно не столь часто нужно. Хотя от макроса конвертора из АТД в ТФ и обратно, я бы не отказался
> не столь часто нужно

значит у алгебры объектов/finally tagless есть недостатки по отношению АДТ?
источник

NL

Nick Linker in rust_offtopic
Gymmasssorla
> не столь часто нужно

значит у алгебры объектов/finally tagless есть недостатки по отношению АДТ?
Ну ты видел списки ограничений на m?
источник

NL

Nick Linker in rust_offtopic
Там прям такие паровозы шо блин
источник

SP

Stanislav Popov in rust_offtopic
Bogdan
А в тайпскрипте есть newtype?

@enomad
там нет явных конструкторов типа вообще но нсть костыль через type branding
источник

DS

Doge Shibu in rust_offtopic
Nick Linker
Там прям такие паровозы шо блин
Ну это обходится запросто trait alias'ами и их хаскель аналогами
источник