<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 5, 2015 at 6:28 AM, Oliver Charles <span dir="ltr"><<a href="mailto:ollie@ocharles.org.uk" target="_blank">ollie@ocharles.org.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>I find myself wanting to be able to say something like:</div><div><br></div><div><font face="monospace, monospace">foo = ...</font></div><div><font face="monospace, monospace">  where import Something.Specific</font></div><div><br></div><div>The result would be to import the contents of Something.Specific into the scope of foo and its other where bindings, but not import into the rest of the module that foo is defined in. As a motivating example, I'm currently working on building some HTML in Haskell, and the amount of symbols that come into scope is huge, when you have a DSL for both CSS and HTML - the real pain point being that you get symbols that often conflict.</div></blockquote></div><br>The biggest problem with this is the question of instances. The typechecker requires that all instances be global; otherwise you can break invariants. (Consider what happens if a different Ord instance is in scope in that part of the program.)</div><div class="gmail_extra"><br></div><div class="gmail_extra">I wonder if this use case can be addressed by a different mechanism (extension), though:</div><div class="gmail_extra"><br></div><div class="gmail_extra">    import qualified Something.Specific<br>    {- ... -}</div><div class="gmail_extra">    foo = ...</div><div class="gmail_extra">      where using Something.Specific -- names would be unqualified in this scope<br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div><div>unix, openafs, kerberos, infrastructure, xmonad        <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div></div>
</div></div>