Время от времени я читаю термин "эффект", но я все еще не могу дать четкое определение того, что это значит. Я предполагаю, что правильный контекст - это эффективные вычисления, но я также видел термин эффектный значения)
Раньше я думал, что эффективные средства имеют побочные эффекты. Но в Haskell нет побочных эффектов (кроме как в некоторой степени IO). Все еще есть эффективные вычисления повсюду.
Затем я прочитал, что монады используются для создания эффективных вычислений. Я могу несколько понять это в контексте Монады State
. Но я не вижу побочного эффекта в монаде Maybe
. В общем, мне кажется, что Monads, которые обертывают функционально подобную вещь, легче видеть как производящие побочные эффекты, чем Monads, которые просто обертывают ценность.
Когда дело доходит до функторов Applicative
, я еще больше теряюсь. Я всегда видел аппликативные функторы как способ map
функции с несколькими аргументами. Здесь я не вижу побочного эффекта. Или есть разница между эффектами и эффектами?