Giả sử tôi có bản ghi ADT sau:
data Foo = Bar { a :: Integer, b :: String, c :: String }
Tôi muốn một hàm lấy một bản ghi và trả về một bản ghi (cùng loại) trong đó tất cả trừ một trong các trường có các giá trị giống hệt với một được truyền dưới dạng đối số, như vậy:
walkDuck x = Bar { a = a x, b = b x, c = lemonadeStand (a x) (b x) }
Các công việc trên, nhưng đối với một bản ghi có nhiều trường hơn (giả sử 10
), việc tạo một hàm như vậy sẽ đòi hỏi rất nhiều cách gõ mà tôi cảm thấy là không cần thiết.
Có cách nào ít tẻ nhạt hơn để làm như vậy?