<div dir="ltr">Hi All<div><br></div><div>I read though Edward Z. Yang's <a href="http://blog.ezyang.com/2016/10/try-backpack-ghc-backpack/">blog post</a> about Backpack but I can't understand what it does above and beyond classes and instances.</div><div><br></div><div>It seems to me we could just replace a "signature" with a "class" and a "unit" with an "instance" and achieve the same thing. </div><div><br></div><div>Of course there are issues with orphans instances if we don't own either the class or the associated data, but it would seem to me that "orphan units" are no less problematic than "orphan instances". </div><div><br></div><div>Edward Kmett's <a href="https://www.reddit.com/r/haskell/comments/8a5w1n/new_package_unpackedcontainers/">unpacked-containers</a> gets some speed improvements using Backpack, but is Backpack just optimisation thing, or are there ways you can organise code with
<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Backpack</span> that you couldn't do without just classes and instances? For example, does Backpack solve the issue of packages requiring huge dependency lists to implement instances that most of their users will not use?</div><div><br></div><div>Thanks,</div><div>Clinton</div></div>