<div dir="ltr"><div>Hello,</div><div><br></div><div>I am the shepherd for proposal #270, and it is time for the committee to review the proposal.  The discussion and the proposal are available here:</div><a href="https://github.com/ghc-proposals/ghc-proposals/pull/270" target="_blank">https://github.com/ghc-proposals/ghc-proposals/pull/270</a><div><br></div><div>Here is my summary of the proposal:</div><div><br><div>The proposal aims to solve the "namespace problem" which appears to largely be related to fact that Haskell has two namespaces, and so types and values may have the same name. </div><div><br></div><div>Proposed changes:</div><div>   1. Change the scoping rules for the language so that type names are in scope at the value level, but values always shadow types.</div><div>   2. Add a new form of import, which can import only the names from a particular names space </div><div>   3. Change the way built-in syntax for tuples and lists works and deprecated ' and '' from DataKinds and TH respectively.   This is a bit elaborate, have a look in the proposal for details</div><div>   4. Add a bunch of warnings that would trigger if you wrote code that made use of Haskell's different name spaces</div><div><br></div><div>My recommendation is that the proposal is rejected, as I don't think that these changes would help Haskell programmers, at least based on the way I use Haskell.  In particular, here are my thoughts on each of the above bullets:</div><div><br></div><div>   1. This is mostly about passing type arguments to functions---I would prefer a notation that is more explicit about the fact that we are passing in a type, and not just a normal argument.</div><div>   </div><div>   2. When I group things into modules, it is usually because they are intended to be used together.  I think I would rarely want to import only the types or only the values in a module, so I imagine it would be much more common to have to write two imports.</div><div>   </div><div>   3. This is quite an intrusive change, that is likely to break code.  I am also not keen to have to use type families, every time I want to use a tuple.</div><div>   </div><div>   4. Using the same name for a data constructor and a type is very common in Haskell.  I find it particularly useful when defining records.  I don't need warnings to let me know that I've done it, as it is highly unlikely that I did it on accident.</div><div><br></div><div>-Iavor</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div></div>