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.