I apologize, I'm still a bit confused about the Random part.
I understand it's like defining something like: def nextInt: Program[Int] = ZPure.suspend(ZPure.attempt(rng.nextInt()))?
Does using Scala's Random directly lead to a loss of purity? Could you please explain it a bit more concretely? Thank you.