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

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

14 ответов

7 просмотров

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

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- Автор вопроса
Vladislav _build/stage1/bin/ghc
Там деталь реализации, что именно подставляется (п...

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

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

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта