중첩된 레코드를 갱신할 때는 렌즈를 사용해요(불변 데이터를 다루는 언어에 해당해요).
중첩된 불변 레코드의 필드를 갱신하는 일은 꽤 번거로워요. 그런 경우의 코드는 구조가 깊은 만큼이나 장황해져요. 예를 들어 Person이라는 레코드가 있고, 그 안에 Address가, Address 안에 Street가, Street 안에 Number가 있다고 해봐요. Number를 갱신하려면 새 Number를 담은 새 Street를 만들고, 그 새 Street를 담은 새 Address를 만들고, 마지막으로 그 새 Address를 담은 새 Person을 만들어야 해요. 벌써부터 헷갈리죠?
이 문제를 해결하는 한 가지 방법은 렌즈를 사용하는 거예요.
렌즈를 사용해 레코드에 접근하는 함수 몇 개를 구현해 봐요. 테스트 스위트는 렌즈를 아예 쓰지 않고도 여러 가지 접근 방식을 실험해 볼 수 있도록 허용해요.