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