Conversation

Because of the implementation using splittable RNGs (to enable generating infinite structures), reassociating your applicative/monadic computation can change which random number you get.
2
Although all our laws depend on a vague notion of equality. Which = do the monad laws use? It can't always be Haskell's Eq, because we would agree that ((->) r) is a monad but ((->) r a) is never Eq.
2
for things like Agda, things like VerifiedMonoid have to abstract over the equality relation, because propositional equality is just one form and doesn't work on things like codata (where you want to use a specific relation for type, representing its bisimulation)
1