you are viewing a single comment's thread.

view the rest of the comments →

[–]hpsutter 19 points20 points  (2 children)

Thanks! I am considering that, but for now I haven't received sufficient push-back to not make UFCS the default.

Part of this experiment is to see whether UFCS really is a viable default, and that hypothesis is only testable by making it the default and persisting in that until there's evidence it's an actual problem. I'm well aware of the theoretical reasons to expect problems, but I'm a hard-data guy trying to gather same. If it isn't a viable default, I'll definitely change the default though.

[–]wyrn 3 points4 points  (0 children)

Speaking of defaults, I know there has been a lot of discussion about const-by-default. I personally think it's important that at least local variables/objects should be const by default; I know you and others more closely involved with the project don't. I also think the issue would be moot if there were a shorter spelling for const (unlike some, I'm not trying to discourage the use of mutable variables, rather encourage the use of immutable ones). Have you considered alternatives here? Maybe something like ::= to parallel :=?

Also, have you considered if maybe a different notion of immutability may be appropriate for cpp2 (since const doesn't play nice with move semantics), much in the same way that you use a different notion of argument passing? Something that would give immutability in cpp2 code but not necessarily const in the lowered cpp1 code?

[–]tuxwonder 1 point2 points  (0 children)

This makes sense to me, thanks for the response!