That's a good question! Some things are hard to predict (compile times), some are easier (their abuse would grow, very soon Elm would loose the first "newbie friendliness" point).
https://github.com/ghc-proposals/ghc-proposals/blob/master/p...
uncurry ($) (hasField @x r) == r
or expressed with the getField and setField wrappers: setField @x r (getField @x r) == r
[1] https://github.com/ghc-proposals/ghc-proposals/blob/master/p...