How to twist pointers without breaking them. - Satvik Chauhan; Piyush P. Kurur; Brent A. Yorgey (Haskell, 2016)