Size: a a a

2021 March 04

к

кана in Haskell
Jerzy Syrowiecki
нет, это другое. я хочу не мутацию, а чистое переобозначение
да, эта фича была бы крутой
источник

AP

Aleksei (astynax) Pi... in Haskell
Э... во что тогда должно рассахариваться такое:
do
 x <- pure 42
 when foo { x <- pure $ x + 1 }
 print x
??
источник

AP

Aleksei (astynax) Pi... in Haskell
И как это переписать с байндом?
источник

AP

Aleksei (astynax) Pi... in Haskell
Хотите, чтобы явные байнды были лишь ограниченным подмножеством do-синтаксиса?
источник

к

кана in Haskell
let x = 42
let jp1 x = print x
let jp2 x = jp1 (x + 1)
if foo then jp2 x else jp1 x

так в лине сделано
источник

AP

Aleksei (astynax) Pi... in Haskell
Т.е. больше умного синтаксиса и кодогенерёжки?
источник

AP

Aleksei (astynax) Pi... in Haskell
А если таких when пяток?
источник

AP

Aleksei (astynax) Pi... in Haskell
2^5 вариантов?
источник

к

кана in Haskell
надо смотреть, думаю не 2^5
источник

AP

Aleksei (astynax) Pi... in Haskell
do
 x <- pure 42
 when foo { x <- pure $ x + 1 }
 when bar { x <- pure 7 }
 when baz { x <- pure $ x * 10 }
 print x
вангую 8 вариантов
источник

AP

Aleksei (astynax) Pi... in Haskell
Понятно, что для каждого условия можно написать по две лямбды-продолжения
источник

AP

Aleksei (astynax) Pi... in Haskell
Но это вырожденный пример. Кода в потвычислениях может много и "переменная" может обновляться далеко не одна и далеко не на одном уровне вниз
источник

AP

Aleksei (astynax) Pi... in Haskell
Это какой-то комбинаторный взрыв сложности, ИМХО
источник

JS

Jerzy Syrowiecki in Haskell
в Лине, как я понимаю, if и for входят в псевдоимперативный сахар
источник

AU

Aleksey Uymanov in Haskell
кана
let x = 42
let jp1 x = print x
let jp2 x = jp1 (x + 1)
if foo then jp2 x else jp1 x

так в лине сделано
няп там это сделано потому, что там в core language тупо нет паттернматчинга. Там по другому никак. А в хаскеле такое точно не надо. Добавит веселья в отладке
источник

к

кана in Haskell
Aleksey Uymanov
няп там это сделано потому, что там в core language тупо нет паттернматчинга. Там по другому никак. А в хаскеле такое точно не надо. Добавит веселья в отладке
хм, а как связан паттерн матчинг и псевдномутабельность?
источник

AU

Aleksey Uymanov in Haskell
ну паттернматчинг там превращается в вызов функций, следовательно любой when (который внутри ПМ) это вызов функций
источник

AU

Aleksey Uymanov in Haskell
а значит их надо обобщить. Хотя да, не связано
источник

AU

Aleksey Uymanov in Haskell
Короче мутабельность нинужна. От нее избавились как раз потому что она вредна при программировании
источник

AU

Aleksey Uymanov in Haskell
Поведение программы становятся экспонинциально сложнее
источник