[ghc-steering-committee] Records again
Joachim Breitner
mail at joachim-breitner.de
Tue Dec 17 14:26:27 UTC 2019
Hi,
Am Dienstag, den 17.12.2019, 11:46 +0000 schrieb Simon Peyton Jones via
ghc-steering-committee:
> > I.e. I will support `f r.x = f (r.x)`, if I can still add space before the
> > .x.
>
> That gets into a separate question, the "naked selector" question. There we have the following viable alternatives
>
> (1) .x is illegal
> (2) .x means (\r. r.x)
> (3) .x is a postfix operator
>
> Certainly (3) would all you to write
> r .x .y meaning r.x.y
> or
> f (r .x .y) meaning f (r.x.y)
>
> But I was trying to close the discussion of (f r.x) before opening the discussion about 1/2/3 for naked selectors.
I don't think it can be answered separately. Maybe it can be seen as a
clearly separate question if one strongly believes that `r.f` is the
roughly the same thing as `M.f`. While I understand that view, I do not
strongly believe in it, e.g. because we have `(complex expression).f`
and `r.f.g.h`, and this shows me that `e.f` is a more complex and less
atomic notion than a qualified name `M.f`.
In order to form a decision about `f r.x = f (r.x)` I also need to know
whether I can, for example, align vertically (a very Haskelly desire)
without changing meaning:
printf "%s %s" grandfather.first_name grandfather.last_name
printf "%s %s" mom .first_name mom .last_name
printf "%s %s" (kid!!0 ).first_name (kid!!0) .last_name
(I am not saying that this is universally good style, but it is also
not completely unreasonable.)
Cheers,
Joachim
--
Joachim Breitner
mail at joachim-breitner.de
http://www.joachim-breitner.de/
More information about the ghc-steering-committee
mailing list