News for hackers. Stuff that matters.
Re:Haskell RecordDotSyntax language extension proposal (Acce... by duijf on Monday September 21, 2020 @02:37AM (#24540481)
From https://github.com/ghc-proposals/ghc-proposals/blob/master/p...

.g is a field selector.

f.g is field selection of a record.

f . g is function composition.

f. g is function composition.

Re:Haskell RecordDotSyntax language extension proposal (Acce... by moomin on Monday September 21, 2020 @04:19AM (#24540996)
Whilst I'm not going to argue the proposal is a bad thing, I think you've just summarized why some are giving it the side eye pretty well.
Re:Haskell RecordDotSyntax language extension proposal (Acce... by ben509 on Wednesday September 23, 2020 @11:01AM (#24567922)
To me it's just, "the dot hugs a field, dot by itself is composition, and module names are capitalized."

While I wouldn't write f. g, if I see it, it's not hugging the field name so it's composition. I don't think I'd have trouble reading it.

But... it will probably trip up newbies and people with odd spacing styles. Hopefully GHC can give a useful error like "In the field selection expression f.g, g is a function defined on XX. Did you mean f . g?"

Re:Haskell RecordDotSyntax language extension proposal (Acce... by thomasahle on Monday September 21, 2020 @04:20AM (#24540999)
(.g) us a field selector, is (. g) then a function :: (a -> b) -> c -> b?
Re:Haskell RecordDotSyntax language extension proposal (Acce... by giraj on Monday September 21, 2020 @07:57AM (#24542264)
Yep! You could check this in GHCi (the repl), for example:

  > :t (. id)
  > (. id) :: (b -> c) -> b -> c
(:t prints the type of an expression, and id is the "identity function" that's b -> b here.)

(EDIT: Maybe you know the above and you're asking if it's being changed in the proposal. It doesn't seem so to me.)

Re:Haskell RecordDotSyntax language extension proposal (Acce... by thomasahle on Monday September 21, 2020 @11:09AM (#24544331)
I'm just pointing out that the difference between (.g) and (. g) is potentially easy to miss.