Допустим, у меня есть следующая запись 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
) создание такой функции повлечет за собой много набора текста, который, как мне кажется, совершенно не нужен.
Есть ли менее утомительные способы сделать то же самое?