Effect sistemalar controlflow uchun alternativ sifatida qaraladi. Masalan siz bilgan, try/catch/finally vaxakazolar ham manashu alebraic effect handlerlarga misol. Effectlarga misol esa Fs, IO capabilietes deb qarashingiz mumkin. Masalan sizni funksiyada faylni o'qish kerak bo'lsa demak funksiyangizda FS capabilites bo'lishi kerak. Effect sistemalar esa manashuni ma'lum semantics asosida generalize ham qiladi. Aytaylik siz ni funksiyada faqat FS capabilites bor, demak funksiyada biror muammo chiqsa aynan FS related side effectlardan chiqadi va ushbu side effectlar compile timeda check va track qilinadi. Va invariantlar bo'lsa compile timeda yuzaga chiqadi. Bu bilan biz runtime emas compile timeda side effectlar xavfsizligiga erisha olamiz. Yani biz side effect qilishimiz uchun oldin ushbu side effect capabilitesni ishlatish kerakligini ham belgilashimiz kerak.
Effect sistemalarning yana bir kuchli tomoni bemalol mock ham qilish mumkin. Masalan biror effectni mock qilsangiz sizni dasturning holati o'zgarmaydi. Masalan
readFile mock qilinsa siz readFile chaqirganingizda olgan natijangizga qarab dastur ishi davom etaveradi. Agar biror muammo bo'lsa albatta effect throw qiladi siz esa uni catch qilasiz. Effect success bo'lsa sizni dastur ishini davom qialveradi. Agar effect system effectlarni yetarlicha yaxshi track qila olsa bazi holatlarda determinizmga ham erishish mumkin. Masalan Random(seed) agar seed fixed bo'lsa
nextInt doyim birxil inputga birxil output qaytaradi. Qiziq tomoni random funksiyasi nondeterministic ko'ringani bilan bu yerda deterministic ishlayabi sababi bu yerda nondeterminizm parametrlangan yani seedga bog'liq. Agar shunchaki Random() bo'lsa ham barbir seedni qayerdandir explicit oladi. Demak nextInt side effect qiladi ammo buning sababi bu yerda seed nondetermenistic ekanida. Ushbu misol yana bir qiziq narsaga etiborni qaratadi yani effectlar boshqa effectlardan foydalanishi mumkin. Effect sistemalarda aynan birnecha effectlarni compose qilish uchun ham turli yechimlar qilingan. Masalan bazi effectlar statega bog'langan bazilari orderinga bog'langan. Ko'p dasturlash tillarida esa bunday narsalar doyim ham inobatga olinmaydi. Kegin runtimeda turli muammolarga sabab bo'lishi mumkin. Effect sistemalar esa manashunday muammolarni aynan compile timeda topishga dasturni eng boshidan xavfsiz side effectlar qila olishiga kerakli imkoniyatlarni taqdim qiladi.
Rasmda Algebraic Effect handlersni mainstream qilishdan motivivatsiya bayon qilingan.
