<div dir="ltr"><div dir="ltr">Am Mi., 5. Jan. 2022 um 12:42 Uhr schrieb David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>>:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">No. Consider a type like this:<div dir="auto"><br></div><div dir="auto">data Foo a = Foo !Int !a</div><div dir="auto"><br></div><div dir="auto">instance Storable a => Storable (Foo a) where ...</div><div dir="auto"><br></div><div dir="auto">Now if a happens to be (), we pay only one word per Foo. [...]</div></div></blockquote><div><br></div><div>This is exactly the kind of breakage I had in mind: With the proposed change, the storage layout would change, and the compiler wouldn't warn you about that at all. Note that I'm not arguing about memory efficiency, it's all about a subtle semantic change for the sake of a single library, wanting to change something which was in place for 10-20 years. Seems like an extremely bad move from the POV of the Haskell ecosystem: It's exactly this kind of ad hoc changes which annoys people.</div></div></div>