Size: a a a

Scala User Group

2021 September 20

λ

λoλcat in Scala User Group
Особенно в докладе для вкатышей
источник

DM

Dmitriy Mozhevitin in Scala User Group
такс, а можно все-таки глянуть сурс, где аппликатив объясняется без <*>?
источник

λ

λoλcat in Scala User Group
Не смогу найти такой сурс
источник

DM

Dmitriy Mozhevitin in Scala User Group
жаль, ну может быть когда-нибудь в чатике он таки всплывет еще раз, и удастся на него взглянуть
источник

λ

λoλcat in Scala User Group
источник

λ

λoλcat in Scala User Group
Может тут
источник

DM

Dmitriy Mozhevitin in Scala User Group
благодарю
источник

BA

Boris Azanov in Scala User Group
Это довольно обширный термин, если вы искали какое-то определение как в словаре, то такого и я не встречал, но его часто упоминают при описании side-effects и effectful computations. И если пригледеться, там описываются вполне котовые Applicative, Monad, Functor которые в cats-effect не выделились почему-то

https://stackoverflow.com/a/33398273/6770614
https://stackoverflow.com/a/49132391/6770614
https://github.com/sirlensalot/tatterdemalion/blob/master/posts/Effectful01.lhs
источник

AS

Artem Sokolov in Scala User Group
а как связаны апликатив и функтор с сайд эффектами?
и монады которые не IO

по ссылкам вроде про это пишут. пошел читать
источник

AS

Artem Sokolov in Scala User Group
ну собственно
"In summary, I consider "effect" to have two reasonable meanings in Haskell parlance:

A "literal" or "absolute" one: an effect is a side-effect; and

A "generalised" or "relative" one: an effect is a functorial context.

On occasion, avoidable disagreements over terminology happen when each of the involved parties implicitly assumes a different meaning of "effect"."
два разных значения у одного слова. в scala/cats, насколько я понимаю, принято чисто первое - когда речь идет непосредственно про сайд эффекты.
источник

EK

Evgenii Kuznetcov in Scala User Group
Эффект это психический конфликт между типом объекта, который программист желает и типом, который у него есть в данном контексте
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Интересно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну "фанкториал" это тоже оверспециализированное, в реальности есть много абстракций, и в принципе абстракции тоже необязательны, важно, что есть какой-то структурный способ композиции данных, описывающих процесс с эффектами.
"Сайд" здесь отброшено, потому что эти эффекты уже не побочные, программист зачастую вполне явно желает вызвать эффекты, а не соглашается на них в процессе получения какого-то значения
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Поэтому можно сказать, что это и первое и второе, которые связаны примерно как на картинке "вероломность образа", прочно ассоциирующейся с Игалем
источник

AS

Artem Sokolov in Scala User Group
""Сайд" здесь отброшено, потому что эти эффекты уже не побочные программист зачастую вполне явно желает вызвать эффекты, а не соглашается на них в процессе получения какого-то значения" - когда отбрасывается "сайд" то в смысле термина отбрасывается только нежелательность, или добавляется что-то еще в это понятие? просто тогда не понятно почему эффект например ридер или райтер - они в общем случае никогда с сайдэффектами не были связаны
источник

AS

Artem Sokolov in Scala User Group
или еще более простой пример - option или either
источник

AS

Artem Sokolov in Scala User Group
испокон веков они использовались исключительно в pure коде, просот чтобы кодировать отсутсвие значения или альтернативы/ошибки. причем здесь сайд-эффекты, коотрые перестали быть побочными
источник

AS

Artem Sokolov in Scala User Group
кажется что второе понятие это генерализация первого
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну "побочный" это же не обязательно "нежелательный".
Вот кто-то принимает сироп от кашля, вызывающий опьянение. Для человека с кашлем этот эффект нежелательный, он просто соглашается с этим принимает ответственность, а для торчка желательный.
Так же если у вас бросаются ошибки при парсинге, кому-то нужен результат, он смиряется с тем, что не всё на свете можно распарсить, а для кого-то эта ошибка и её репортинг - важная часть процесса.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Так что можно воспользоваться формулой отсюда.
У вас есть процесс, вы описали его инпут, описали его аутпут.
А эффекты - это описание каких-то динамических свойств, чего-то, что в процессе возникает, присутствует.
Кому-то они важны, кто-то с ними смиряется.
источник