Скажімо, у мене є такий запис ADT:
data Foo = Bar { a :: Integer, b :: String, c :: String }
Я хочу функцію, яка бере запис і повертає запис (того ж типу), де всі поля, окрім одного, мають однакові значення з тим, що передано як аргумент, наприклад:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
Вищезазначене працює, але для запису з більшою кількістю полів (скажімо 10
), створення такої функції спричинило б за собою багато введення тексту, що мені здається зовсім непотрібним.
Чи є якісь менш виснажливі способи зробити те саме?