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?