How does GHC implement layout?