Angenommen, ich habe den folgenden Datensatz ADT:
data Foo = Bar { a :: Integer, b :: String, c :: String }
Ich möchte eine Funktion, die einen Datensatz aufnimmt und einen Datensatz (desselben Typs) zurückgibt, bei dem alle Felder bis auf eines identische Werte wie das als Argument übergebene haben:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
Das Obige funktioniert, aber für einen Datensatz mit mehr Feldern (z. B. 10) würde das Erstellen einer solchen Funktion viel Tippen erfordern, was ich für ziemlich unnötig halte.
Gibt es weniger langwierige Möglichkeiten, dasselbe zu tun?