Size: a a a

2017 December 06

ZK

Zheka Kozlov in Haskell Start
Vasiliy Yorkin
а можно пример? не получается сходу представить
do (Just x) <- return Nothing


vs

do let (Just x) = Nothing


Второе упадёт с ошибкой
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
ещё лучше рассахарить первый случай в байнд
источник

VY

Vasiliy Yorkin in Haskell Start
ага, понятно, спасибо
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
return Nothing >>= \x -> ... - вся соль в ">>="
источник

ZK

Zheka Kozlov in Haskell Start
Кстати, почему я так не могу написать:
do { let x = 1; pure x }
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
почему "не можешь"?
источник

ZK

Zheka Kozlov in Haskell Start
пишет parse error
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
в GHCi?
источник

ZK

Zheka Kozlov in Haskell Start
угу
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
потому что let - тоже многострочный
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
нужны скобки и для него
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Иначе он захыватывает и pure и получается некорректный синтаксис
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
do { let {x = 1; y = 2}; pure (x + y)}
источник

ZK

Zheka Kozlov in Haskell Start
интересно
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
в оригинале ; после x = 1, это не завершение let, это разделитель между определениями
источник

ZK

Zheka Kozlov in Haskell Start
ок
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Примерно то же самое будет с case и проч. Т.о. если уж пишешь в одну строку со скобками (особенно, если есть do где-то), нужно их везде использовать, т.к. у парсера не будет подсказок в виде отступов
источник

PG

Pïg Grëënëst in Haskell Start
egoarka
оффтоп.
Заметил такую вещь: обычно, когда говорят, что типа сложно, нереально понять, "новички не осилят" и т.п., то на подсознательном уровне откладывается это. И в дальнейшем это мнение мешает разобраться в проблеме самостоятельно, а когда такие мнения накапливаются одно за другим, то и вовсе не хочется браться за проблему. Но иногда, конечно, это и придает мотивации, чтобы доказать себе, мол "я смогу". Не знаю, может у меня одного так.
Сложно понять новичков — то они сложные вещи как орешки щелкают, то путаются в максимально простых.
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Если хочется научиться и понять, нужно не скакать по темам, пропуская "скучные". Если хочется сразу "только практика, только хардкор", то, возможно, Haskell - неправильный выбор
источник

YS

Yuriy Syrovetskiy in Haskell Start
Vasiliy Yorkin
а можно пример? не получается сходу представить
let Just x = mx -- скорее всего, логическая ошибка, лечится ворнингом incomplete-uni-patterns

Just x <- pure mx -- проверка паттерна и заложенный в логику вызов метода fail
источник