Size: a a a

2020 November 19

AV

Alexander Vershilov in Haskell
Vlad 0xd728c4a7cd55d8db
В общем, если оставить в сторону абстрактные темы, то могу переформулировать так - есть ли языки/экосистемы/whatever которые имея несколько частей задеплоеными на разные ноды, связанные по сети - могли бы мне гарантировать, что условный HTTP GET ничего никуда не пишет (чистый в системном смысле)?
Ну можно, но игра не стоит свечь в большинстве случаев
источник

AV

Alexander Vershilov in Haskell
Алексей ayaye :)
для встроенного софта это важно, за этим следят и, вроде бы, кое-где строго доказывают
Это не человеческие системы Ж)
источник

AV

Alexander Vershilov in Haskell
Так-то в hard realtime надо доказывать и следить
источник

AK

Aleksey Kislitsa in Haskell
Алексей ayaye :)
для встроенного софта это важно, за этим следят и, вроде бы, кое-где строго доказывают
Там вроде как в тактах время измеряют?
источник

А

Алексей ayaye :)... in Haskell
Aleksey Kislitsa
Там вроде как в тактах время измеряют?
я близко не знаком
источник

AV

Alexander Vershilov in Haskell
кажется, но это не точно, что в таких системах в отличии от пользовательских такты пропорциональны времени
источник

AV

Alexander Vershilov in Haskell
Так что это вопрос удобных единиц измерения
источник

А

Алексей ayaye :)... in Haskell
Vlad 0xd728c4a7cd55d8db
В общем, если оставить в сторону абстрактные темы, то могу переформулировать так - есть ли языки/экосистемы/whatever которые имея несколько частей задеплоеными на разные ноды, связанные по сети - могли бы мне гарантировать, что условный HTTP GET ничего никуда не пишет (чистый в системном смысле)?
статический анализ реализации http get может показать, что, грубо говоря, socket.read используется, а socket.write - нет
источник

AV

Alexander Vershilov in Haskell
не может
источник

AV

Alexander Vershilov in Haskell
100% используется socket.write
источник

AV

Alexander Vershilov in Haskell
^_^
источник

AV

Alexander Vershilov in Haskell
При этом ещё допустимо чтение из файла/базы/<libastral> и не везде можно отличить действие с эффектом, от действия без эффекта, а ещё могут и будут писаться метрики и логи, которые вообще-то эффект
источник

AV

Alexander Vershilov in Haskell
Поэтому скорее обычно будет разумное приближение, а разумное приближение можно сделать в Haskell
источник

А

Алексей ayaye :)... in Haskell
Alexander Vershilov
При этом ещё допустимо чтение из файла/базы/<libastral> и не везде можно отличить действие с эффектом, от действия без эффекта, а ещё могут и будут писаться метрики и логи, которые вообще-то эффект
я имею ввиду, что если все эффекты бы детально описывались, тогда можно было бы что-то подоказывать
источник

AV

Alexander Vershilov in Haskell
Просто надо использовать не IO а обёртку поверх, например введя RIO r (restricted IO, а не фреймворк от Сноймана), где r это RO | RW
источник

AV

Alexander Vershilov in Haskell
тогда readonly операции будут RIO r, а readwrite RIO RW
источник

AV

Alexander Vershilov in Haskell
Тогда при сборе выражения выведется нужный тип
источник

AV

Alexander Vershilov in Haskell
Так иногда делают
источник

А

Алексей ayaye :)... in Haskell
можно пойти дальше и различать, куда именно запись идет
источник

AV

Alexander Vershilov in Haskell
Можно идти как угодно далеко в зависимости от того, какой есть профит
источник