Size: a a a

Compiler Development

2020 January 02

I

Ilmir in Compiler Development
Berkus Decker
Всяко не прибавляет, у тебя нету например exhaustive matching-а.
Про паттерн-матчинг я уже написал выше.
источник

BD

Berkus Decker in Compiler Development
Ilmir
Про паттерн-матчинг я уже написал выше.
Так это одно из основных преимуществ. Эмулируя без него ты эмулируешь ... что вообще?
источник

I

Ilmir in Compiler Development
Berkus Decker
Так это одно из основных преимуществ. Эмулируя без него ты эмулируешь ... что вообще?
Не паттерн-матчинг?
источник

BD

Berkus Decker in Compiler Development
Ilmir
Не паттерн-матчинг?
Это костыляция, не эмуляция.
источник

I

Ilmir in Compiler Development
Berkus Decker
Это костыляция, не эмуляция.
>  у тебя нету например exhaustive matching-а.
Вы хотя бы писали на сях или плюсах? -Wswitch-enum в помощь.
> Про паттерн-матчинг я уже написал выше.
источник

BD

Berkus Decker in Compiler Development
Ilmir
>  у тебя нету например exhaustive matching-а.
Вы хотя бы писали на сях или плюсах? -Wswitch-enum в помощь.
> Про паттерн-матчинг я уже написал выше.
Нет, ни разу.
источник

YS

Yuriy Syrovetskiy in Compiler Development
Gymmasssorla
Ты можешь это воспринимать как синтаксический сахар, не более
чушь. всё наоборот, у ADT интерфейс меньше, чем у struct + tag + union:

enum Option<T> {
   None,
   Some(T),
}


у вас просто нет способа обратиться напрямую к тэгу или к полю. только через сопоставление с образцом
источник

G

Gymmasssorla in Compiler Development
Yuriy Syrovetskiy
чушь. всё наоборот, у ADT интерфейс меньше, чем у struct + tag + union:

enum Option<T> {
   None,
   Some(T),
}


у вас просто нет способа обратиться напрямую к тэгу или к полю. только через сопоставление с образцом
Как это противоречит тому, что я сказал?
источник

G

Gymmasssorla in Compiler Development
> Синтаксический сахар в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
источник

YS

Yuriy Syrovetskiy in Compiler Development
Gymmasssorla
> Синтаксический сахар в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
вот именно. в Расте enum не добавляет новый способ обращения с существующими фичами, а создаёт новую фичу
источник

AT

Alexey Tkachenko in Compiler Development
Помнится, в паскале было то же самое во времена динозавров...
источник

AT

Alexey Tkachenko in Compiler Development
О, даже в Алголе....
источник

AT

Alexander Tchitchigin in Compiler Development
Alexey Tkachenko
О, даже в Алголе....
"Algol was a huge improvement not only on its predecessors but on most of its successors." Забыл, чья цитата... 😊
источник

AT

Alexey Tkachenko in Compiler Development
👍🏻
источник

G

Gymmasssorla in Compiler Development
Yuriy Syrovetskiy
вот именно. в Расте enum не добавляет новый способ обращения с существующими фичами, а создаёт новую фичу
Это спор об определениях
источник

AT

Alexey Tkachenko in Compiler Development
Gymmasssorla
> Синтаксический сахар в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
Собсна, union и du - это отличие в том числе в поведении
источник

YS

Yuriy Syrovetskiy in Compiler Development
Gymmasssorla
Это спор об определениях
нет, есть конкретные фичи у ADT, которые невозможны без ADT (enum)
источник

YS

Yuriy Syrovetskiy in Compiler Development
или аналогов (Сhurch encoding, например)
источник

G

Gymmasssorla in Compiler Development
Yuriy Syrovetskiy
нет, есть конкретные фичи у ADT, которые невозможны без ADT (enum)
https://t.me/CompilerDev/49620

Вот это определение полностью подходит под enum в Rust. Не влияет на поведение? Не влияет. Делает удобнее? Да. Вопрос тут по сравнению с чем не влияет на поведение и делает удобнее - по сравнению с ручным struct + tag + union
источник

G

Gymmasssorla in Compiler Development
tag нужен, чтоб "матчиться" по вариантам, это делает match в Rust
источник