The following is not a causality loop:
displayHeight >>= sample . current
..but this one is:
tile (fixed 1) $ displayHeight >>= sample . current
I guess this can be somewhat surprising to the user, since the semantics are not exactly explained in the documentation.