[[!comment format=mdwn username="joey" subject="""comment 1""" date="2016-02-24T21:09:52Z" content=""" `checkResult` is the key to understanding this. Its (simplified) type signature: checkResult :: m a -> (a -> m Result) -> p i -> Property i It's being given getstat as the first parameter. It runs that before the property does anything, and it passes that value to comparestat. So, oldstat is the getstat value from before the property did anything. """]]