[Haskell-cafe] Status of TypeDirectedNameResolution proposal?
simonpj at microsoft.com
Wed Nov 18 05:10:39 EST 2009
It's always tempting to spend a lot of time on syntax, but in this case it may be justified. Syntactic brevity is a good part of the point of TDNR. And I'm on a train which is a good time to argue about syntax.
Personally I think there are strong advantages to ".":
* For record selectors, currently written (x r), writing r.x is exactly right
* For these unary operators, r.x really does mean (abstractly) "select the x field from r"
* And that is the way that "." is used for modules: "M.x" means "select the x
function from module M"
* You can think of qualified names for modules in the same way "Control.Monad" means
pick the Monad module from the Control group.
* It culturally fits with the way "." is used on OO languages
What is the disadvantage? Well, Haskell already uses "." for composition. But
* "." is already special. If you write M.x you mean a qualified name, not the
composition of data constructor M with function x
I merely propose to make it even special-er! I'll keep quiet about syntax now.
| -----Original Message-----
| From: haskell-cafe-bounces at haskell.org [mailto:haskell-cafe-
| bounces at haskell.org] On Behalf Of wren ng thornton
| Sent: 18 November 2009 03:07
| To: Haskell Cafe
| Subject: Re: [Haskell-cafe] Status of TypeDirectedNameResolution proposal?
| Neil Brown wrote:
| > Having skimmed the page, it seems like the re-use of "." is one of the
| > major difficulties of the proposal. Would it be possible to use "->"?
| > It has been used for accessing members in C and C++, so it is not too
| > unusual a choice.
| It's also the one that Perl went with.
| > It is already special in Haskell so it wouldn't break
| > anyone's code -- but do its other uses (case statements and lambdas)
| > mean that it would cause problems in the grammar if re-used for TDNR?
| Given the other uses of -> in Haskell, I'm hesitant to suggest it
| either. I seem to recall # is the option used by OCaml and a few other
| functional-OO languages. So far as I know -XMagicHash is the only thing
| that would conflict with that name so it seems far less invasive than .
| or ->. Another option would be to use @ which is currently forbidden in
| expressions, though that might cause issues with System F/Core.
| Live well,
| Haskell-Cafe mailing list
| Haskell-Cafe at haskell.org
More information about the Haskell-Cafe