次のレコードADTがあるとします。
data Foo = Bar { a :: Integer, b :: String, c :: String }
次のように、レコードを取得して(同じタイプの)レコードを返す関数が必要です。この場合、フィールドの1つを除くすべてが、引数として渡された値と同じ値になります。
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
上記は機能しますが、より多くのフィールド(たとえば10
)を持つレコードの場合、そのような関数を作成すると、多くの入力が必要になり、私はまったく不要だと感じます。
同じことをするための面倒な方法はありますか?