필자는 순수 함수의 두 가지 함수를 가지고 있습니다. 첫 번째 함수는, 소포 소요 그 위에 집을 구축하고, 잡지에 광고를 사진을 촬영 : 두 번째 기능은 또한 소포 소요 그 위에 집을 빌드 및 함수 언어로 순수 함수를 작성할 때 불필요한 계산을 피하는 방법은 무엇입니까?
let buildAndAdvertiseHouse parcel =
parcel
|> inspect
|> buildWalls
|> buildRoof
|> takePhoto
|> advertise
는 마무리를 추가 터치 :
let buildAndCompleteHouse parcel =
parcel
|> inspect
|> buildWalls
|> buildRoof
|> paintWalls
|> addFurniture
두 함수가 순수한 함수이기 때문에 두 함수가 순수하다는 것도 분명합니다. 이제 소포가 있는데, niceParcel
라고 말하면 두 함수를 모두 적용하고 싶습니다. 그러나 처음 세 하위 함수는 계산에 많은 시간이 걸리고 두 함수간에 공유되므로 두 번 계산되는 것을 피하고 싶습니다.
내 코드를 어떻게 리팩터링합니까? 이러한 불필요한 계산을 피하고 명확한 의미를 갖는이 멋진 함수를 유지하면서 어떻게해야합니까?
만약'parcel'이 generic 타입이 아니라면'let buildAnd ... = inspect >> buildWalls >> ... >> advertise'를 사용하여 더 관용적 인 코드를 만들 수 있습니다. (적당한 들여 쓰기로) –
Regarding 질문, 두 함수를'build','advertise','completeHouse'라는 세 개의 함수로 나누지 않으시겠습니까? –
그들은 프로그램의 다른 부분에서 사용할 수있는 하나의 엔티티를 형성합니다. 물론 분리 될 수 있지만이 엔티티는 손실됩니다. 이 경우, 당신이 그것을 사용하기를 원한다면, 당신은 내면의 작동을 알아야 할 것입니다. 즉 그것이 처음으로 건설 된 다음 완성되거나 광고되는 것입니다. 나는 당신이 내적 활동을 알아야한다는 것을 피하고 싶다. – Tuur