함수형코딩 130-150

빵동·2023년 3월 27일

함수형코딩 (완독)

목록 보기
9/29

함수형코딩 130-139

변경 가능한 데이터를 읽는 것은 액션이다. 변경 가능하다는 것은 읽는 시점에 원하는 데이터가 아닐 수 있기 때문에 함수의 순수성을 해치고 함수의 동작을 예측 가능하기 어렵게 만든다.

불변 데이터를 읽는 것은 계산이다. 예측 가능하다.

불변 데이터 구조는 변경 가능한 데이터 구조보다 메모리를 더 많이 쓰고 느리다. 데이터를 복사해야 하고 구현이 복잡하고, 함수가 종료되면 가비지 컬렉터가 메모리를 회수해야하는 여러가지 단점이 있지만 예측 가능성과 안정성을 추구하는게 함수형 코딩이다.

얕은 복사는 중첩된 데이터 구조에 최상위 데이터만 복사하고 나머지 객체는 참조로 공유한다. 두개의 중첩된 데이터 구조가 어떤 참조를 공유한다면 구조적 공유라고 한다. 불변 데이터 구조라면 구조적 공유는 안전하다고 말하는데, 계산으로 만드는 복사, 변경, 반환 과정중 복사를 할 때 얕은 복사만으로도 함수형 코딩의 함수의 순수성, 예측 가능성을 만족한다. 모든 데이터 구조를 불변 데이터 구조로 만들어야 한다.

함수형 코딩 140-150

중첩된 모든 데이터가 변하지 않아야 불변형 데이터라고 할 수 있다. 얕은 복사의 경우 데이터의 최상단만 복사하고 각 데이터의 참조는 기존 데이터와 동일하다. 내부 데이터를 변경하고자 할때는 내부 데이터까지 복사해서 사용해야한다.

기존 코드에서 사용하는 데이터를 불변형 데이터로 바꾸기 위해서는 방어적 복사를 사용한다.

깊은 복사를 사용해서 불변형 데이터를 만들고, 계산 함수로 보낸다. 이후 나온 결과를 깊은 복사하여 기존 데이터에 덮어 씌운다

0개의 댓글