
-------- Original Message --------
Subject: Re: [Haskell-cafe] Proposal: Shorter Import Syntax
From: Anthony Cowley
On Sat, Jun 6, 2015 at 8:25 PM, Alexander Kjeldaas
wrote: On Sat, Jun 6, 2015 at 10:26 AM, Vlatko Basic
wrote: Maybe a slightly changed syntax like this could be less confusing
import Data.Map (Map) andAs M (...)
or
import Data.Map (Map) and as M (...)
It is clear (IMHO) what is coming from where, and both lists are at the end of their part, so can be written nicely in several rows, if needed.
import Data.Map (Map) andAs M (lengthy, list)
Parser can also easily distinguish between the current and the new syntax so they can coexist, so no backward compatibility problem.
I much prefer a syntax with a bit more words, like this one. The original proposal is simply impossible to understand without reading a manual. It has at least two equally valid interpretations.
Adding one or two words like in this examples makes it possible, without reading a manual, to distinguish between possible interpretations. I think that must be a minimal requirement for such a syntax extension. Nobody needs to hire a language lawyer to understand a python import statement. That shouldn't be needed for Haskell either.
Alexander
Thanks for the feedback, Vlatko, Alexander, and Kosyrev! I would like the syntax to avoid being overly hostile to newcomers, so some tweaks are certainly possible.
So that I understand, you believe that a newcomer could read
import Data.Map (Map) andAs M (lengthy)
and infer which names are qualified and which aren't without consulting a manual, whereas without the "and" it would be "impossible to understand"? I confess I find that hard to believe, but I'll bear it in mind in case this option picks up wider support. There are already three of you on board, so it's off to a good start.
Anthony
Well, when combining two sentences in natural language, you'd use a "comma" or the word "and" to distinguish between the two. Since we can't use comma here (can we?), the word "and" unambiguously shows that "as" does not relate to the previous "Data.Map (Map)", but is a beginning of the "new", qualified import. I think that is quite clear in this syntax. So to answer your question, I think yes, this would be clear to anyone, not only newcommers, that those are actually two combined imports, unqualified and qualified, without "consulting the manual". :-) Some other syntax/wording on the same track would be fine as well. br, vlatko