Size: a a a

2021 January 14

AP

Aleksei (astynax) Pi... in Haskell Start
То, что какие-то инстансы Applicative дают вам предсказуемый порядок — исключение
источник

A

Aleksandr Khristenko in Haskell Start
Aleksei (astynax) Pirogov
Написать такой инстанс Applicative для Writer, при котором порядок записи будет обратным, легко. Потому что <*> не запрещает
Написать инстанст монады, которая нарушает законы тоже легко. Потому что никто не запрещает.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
При чём здесь законы?
источник

A

Aleksandr Khristenko in Haskell Start
Aleksei (astynax) Pirogov
То, что какие-то инстансы Applicative дают вам предсказуемый порядок — исключение
Цитата из хаскель вики: The convention in Haskell is to always implement (<*>) and other applicative operators using left-to-right sequencing.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
> The convention
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Компилятор не проверяет соглашения
источник

A

Aleksandr Khristenko in Haskell Start
Окей, зачем там дан пример с do нотацией? Что он должен был продемонстрировать?
источник

A

Aleksandr Khristenko in Haskell Start
Aleksei (astynax) Pirogov
Компилятор не проверяет соглашения
Компилятор и законы тайпклассов не проверяет.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Потому что не может
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В других языках компиляторы и законы проверяют
источник

A

Aleksandr Khristenko in Haskell Start
Aleksei (astynax) Pirogov
То, что какие-то инстансы Applicative дают вам предсказуемый порядок — исключение
А можно пример аппликативов с другим порядком? Раз предсказуемый порядок это исключение.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Async
источник

AP

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

Класс Monad для того существует, чтобы строго задавать порядок выполнения эффектов. Класс Applicative не привносит порядок сам по себе (но и не запрещает).
источник

D

Dreamerinnoise in Haskell Start
Aleksandr Khristenko
А можно пример аппликативов с другим порядком? Раз предсказуемый порядок это исключение.
список
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Для списка как раз всё обычно
источник

AP

Aleksei (astynax) Pi... in Haskell Start
ZipList отличается
источник

JS

Jerzy Syrowiecki in Haskell Start
Aleksandr Khristenko
Окей, зачем там дан пример с do нотацией? Что он должен был продемонстрировать?
чисто синтаксическое расширение ApplicativeDo
источник

JS

Jerzy Syrowiecki in Haskell Start
Aleksandr Khristenko
Окей, зачем там дан пример с do нотацией? Что он должен был продемонстрировать?
точнее, это код с примерно таким же смыслом. если будет монадой, будет с точно таким же
источник

JS

Jerzy Syrowiecki in Haskell Start
Aleksandr Khristenko
А можно пример аппликативов с другим порядком? Раз предсказуемый порядок это исключение.
Concurrently
источник

к

кана in Haskell Start
Aleksandr Khristenko
Цитата из хаскель вики: The convention in Haskell is to always implement (<*>) and other applicative operators using left-to-right sequencing.
хм, удивительно, я думал что конвенция - как раз предполагать что они могут быть распараллелены, так как это профит моноида над эффектами, коим аппликатив является, а последовательные эффекты это уже как раз исключения, типа парсера, стейта, и всего что подразумевается само по себе последовательным
источник