I recently started toying with polysemy - https://hackage.haskell.org/package/polysemy - a library to create DSLs which are then interpreted. Quite similar to Free Monads but way easier to use. So far I am using it only for a toy project to access S3 buckets in an AWS Lambda, but it is fun and makes me think about architecture more. Anyone else out there who uses it? Please get in touch, I'd like to exchange ideas, help, questions...