169 похожих чатов

S в ST s a - костыляция брендов?

14 ответов

11 просмотров

кто такой бренд

s в ST s a это не костыляция, а использование по прямому назначению экзистенциальных типов для выражения области видимости нити стейта

Ivan Rubztsov- Автор вопроса
Danil Berestov
кто такой бренд

ЕМНИП так называется связь между типами такая: a = machine b = machine a_task :: Task ('brand a) = nextTask a b_task :: Task ('brand b) = nextTask b executeTask a_task a -- OK executeTask b_task a -- compilation error, b_task have brand b instead of a

Ivan Rubztsov
ЕМНИП так называется связь между типами такая: a =...

это больше всего похоже просто на фантомные типы, сам по себе фантомный тип не дает той гарантии, что дает экзистенциал в runST

Ivan Rubztsov- Автор вопроса
Nutritional Rabbit
s в ST s a это не костыляция, а использование по п...

Мне это показалось костыляцией из-за того, что не понятно, что на практике будет подставлятся на месте s, а я ожидаю что на месте дженерика всегда что-то подставляется (возможно здесь я не прав, это у меня из других языков)

Ivan Rubztsov
Мне это показалось костыляцией из-за того, что не ...

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

Ivan Rubztsov- Автор вопроса
Danil Berestov
это больше всего похоже просто на фантомные типы, ...

я эту фичу языка/тайп системы слышал под названием "бренды" (brands), откуда уже не помню, вроде на языках с зависимыми типами тривиально реализуется

Ivan Rubztsov- Автор вопроса
Nutritional Rabbit
в этом вся задумка, мы не знаем что туда подставля...

то есть оно так и компилируется без подставленного (выведенного) дженерика?

Ivan Rubztsov
то есть оно так и компилируется без подставленного...

Там деталь реализации, что именно подставляется (по-моему что-то вроде Any), но логически ты можешь на это смотреть как на подстановку сгенерированной компилятором уникальной метки, уникальная для каждого вызова runST.

Ivan Rubztsov- Автор вопроса
Ivan Rubztsov- Автор вопроса
Vladislav _build/stage1/bin/ghc
Там деталь реализации, что именно подставляется (п...

но для runST/ST в компиляторе нет специальных случаев?

Ivan Rubztsov
вот это именно что бренды

да ты бы хоть дал нам определние этих брендов если повторять одно и то же название много раз, его смысл яснее не станет

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта