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.

2 Likes

I’m not using IO monads, but John de Goes states in his article https://degoes.net/articles/no-effect-tracking 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.