>>107147637
If you need to make non lawful lenses then it's over, you make a tuple to do polymorphic wide updates and if you want to do a non polymorphic single update you need to provide either more lenses or dummy values for the tuple.
You're right that the current HasField is just lenses. What I'm saying is that the vanilla update "case Record {a. b. c} -> Record {a = f a, b = g b, c = h c}" is more powerful and has no issues typechecking. Therefore when somebody says "ok lets compromise and do setField just like lenses" somebody says "uuuuh in MY usecase I do this fucky thing with this fucky record, OverloadedRecordUpdate is supposed to just work like the powerful update chud" and progress stalls again.