Size: a a a

2021 February 17

DB

Danil Braun in Haskell Start
Danil Braun
А где можно конкретно про это почитать?
Именно в сравнении с условным выражение, где так не проверяется.
источник

A

Arjaz in Haskell Start
Danil Braun
Уровень вложенности увеличивается
Multi-way if или case — то, что нужно
источник

DB

Danil Braun in Haskell Start
Arjaz
Multi-way if или case — то, что нужно
Ну вот я об этом и талдычу, в чём тогда разница важная между ними, и если людям рассказали уже про условное выражение (с elif или подобным), то как мотивируется введение case.
источник

DB

Danil Braun in Haskell Start
Они вам скажут, что вот мол, можем же так написать, даже короче может получиться.
источник

T

The Lord of Hypercom... in Haskell Start
Jerzy Syrowiecki
в теории языков PM мотивируется сумтипами, а if-then-else ничем не мотивируется, это просто сахар над PM
Пчел...
источник

T

The Lord of Hypercom... in Haskell Start
Не Джерзи, а Данил
источник

JS

Jerzy Syrowiecki in Haskell Start
Danil Braun
А где можно конкретно про это почитать?
просто продолжайте изучать Хаскель, дойдите до сумтипов
источник

JS

Jerzy Syrowiecki in Haskell Start
Danil Braun
Уровень вложенности увеличивается
if a then
 можно
else if b then
 и
else if c then
 не
else
 увеличивать
источник

A

Arjaz in Haskell Start
Danil Braun
Ну вот я об этом и талдычу, в чём тогда разница важная между ними, и если людям рассказали уже про условное выражение (с elif или подобным), то как мотивируется введение case.
Pattern matching очень хорошо работает с алгебраическими типами, которые можно матчить и вытаскивать из них значения
data Something = A Int | B | C Int String


case (x :: Something) of
 A i -> …
 B -> …
 C i s -> …
источник

JS

Jerzy Syrowiecki in Haskell Start
Danil Braun
Ну вот я об этом и талдычу, в чём тогда разница важная между ними, и если людям рассказали уже про условное выражение (с elif или подобным), то как мотивируется введение case.
if не даёт информации о структуре данных
источник

T

The Lord of Hypercom... in Haskell Start
Являются ли монады костылём для тех случаев, когда чистыми функциями почему-то не обойтись? Зачем они вообще нужны, эти ваши монады?
источник

JS

Jerzy Syrowiecki in Haskell Start
The Lord of Hypercomplex Numbers
Являются ли монады костылём для тех случаев, когда чистыми функциями почему-то не обойтись? Зачем они вообще нужны, эти ваши монады?
монады — это инструмент управления компьютейшенами как с помощью чистых функций. и не единственный, есть ещё аппликативы, стрелки
источник

JS

Jerzy Syrowiecki in Haskell Start
The Lord of Hypercomplex Numbers
Являются ли монады костылём для тех случаев, когда чистыми функциями почему-то не обойтись? Зачем они вообще нужны, эти ваши монады?
грязные языки не дают инструменты для управления компьютэйшенам, там одинаковые процедуры для всех.

этот как статическая и динамическая типизация, только второй слой
источник

DB

Danil Braun in Haskell Start
The Lord of Hypercomplex Numbers
Пчел...
Окей, т. е. чтобы объяснить, зачем нужен PM, нужно ли про него рассказывать до условного выражения, чтобы сказать, что это просто сахар?
источник

T

The Lord of Hypercom... in Haskell Start
Danil Braun
Окей, т. е. чтобы объяснить, зачем нужен PM, нужно ли про него рассказывать до условного выражения, чтобы сказать, что это просто сахар?
не ко мне вопрос
источник

DB

Danil Braun in Haskell Start
Да, @cblp_su
источник

JS

Jerzy Syrowiecki in Haskell Start
Danil Braun
Окей, т. е. чтобы объяснить, зачем нужен PM, нужно ли про него рассказывать до условного выражения, чтобы сказать, что это просто сахар?
можно в любом порядке рассказывать
источник

DB

Danil Braun in Haskell Start
И про сумтипы надо говорить до PM или параллельно с этим? Просто в том же PAPL[1] они так не делают, а сразу используют PM со списками, а уже потом говорится про sum/product-type. И мотивировка у них не такая.

[1] https://papl.cs.brown.edu/2020/
источник

JS

Jerzy Syrowiecki in Haskell Start
Danil Braun
Окей, т. е. чтобы объяснить, зачем нужен PM, нужно ли про него рассказывать до условного выражения, чтобы сказать, что это просто сахар?
давай такой пример возьмём

data T = Z | X{x :: Int} | XY{x, y :: Int}

if t == Z then
 0
else
 t.x + t.y


можно здесь использовать t.x? а t.y? почему? как написать алгоритм, который это проверит?
источник

T

The Lord of Hypercom... in Haskell Start
Danil Braun
Окей, т. е. чтобы объяснить, зачем нужен PM, нужно ли про него рассказывать до условного выражения, чтобы сказать, что это просто сахар?
Да нет
Сначала изучают строки как "string", а уже потом говорят, что это сахар для [char]. Сначала изучают списки как [l, i, s, t], а уже потом говорят, что это сахар для el1:el2:el3:el4
источник