How important is it for a program to be "fully functional"?

Hi all,

I am writing a program that has a core that is fully pure consisting of only pure functions. I push the IO to the edges so that its like a thing crust around this pure core. This way i don’t have to introduce things like IO Monads. If not i imagine this concept of IO Monad will need to be introduce through out the app since it happens at the root where say interaction with database is happening.

I am wondering what is the value proposition for having a program to be fully pure? From a practical standpoint i seem to already enjoy all of the benefits of FP since the core is pure. What compelling extra benefit do i get by making my whole app pure? Feels like there is not much extra other than being functional for the sake of functional.


I’m not using IO monads, but John de Goes states in his article that the value of IO monads isn’t the wrapping of side effects itself, but rather the functionality that the IO monad of your choice gives you.

1 Like

Hi thanks for your answer. I am sold on the value proposition of ZIO.