I think unsafePerformIO
might actually be a pretty good alternative, we just need to understand how to use it safely, which was what motivated my original question to @rae
I got a lot out of this thread and I’ll read and study all of the material, so thank you to everyone that gave me pointers and suggestions!