Digamos que eu tenha o seguinte registro ADT:
data Foo = Bar { a :: Integer, b :: String, c :: String }
Eu quero uma função que leva um registro e retorna um registro (do mesmo tipo) onde todos, exceto um dos campos têm valores idênticos ao passado como argumento, assim:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
O procedimento acima funciona, mas para um registro com mais campos (digamos 10
), a criação de tal função envolveria muita digitação que considero desnecessária.
Existem maneiras menos tediosas de fazer o mesmo?