다음 레코드 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
:)의 경우 이러한 기능을 만들려면 많은 입력이 필요하므로 불필요하다고 생각합니다.
덜 지루한 방법이 있습니까?
3
업데이트를위한 레코드 구문이 존재하지만 금방 번거로워집니다. 대신 렌즈 를 살펴보십시오 .
—
Cat Plus Plus