e.g. data T = MkT { x,y :: Int } f (MkT { x = !v, y = negate -> w }) = v + w MERGED from commit 41c7342e