Siden Haskell er et rent funksjonelt programmeringsspråk, kan ikke funksjoner ha bivirkninger. Med andre ord kan ikke funksjoner endre verdier tilgjengelig andre steder i koden – de kan kun sette sine egne lokale verdier samt returnere disse, men ved bruk av konseptet monader kan man kontrollert etterligne denne oppførselen der det trengs.