小编Tuu*_*uur的帖子

在函数式语言中编写纯函数时如何避免不必要的计算?

我有两个函数,它们是纯函数的组合.第一个功能需要一个包裹,在其上建一个房子,然后拍照以在杂志上刊登广告:

let buildAndAdvertiseHouse parcel = 
    parcel
    |> inspect
    |> buildWalls
    |> buildRoof
    |> takePhoto
    |> advertise
Run Code Online (Sandbox Code Playgroud)

第二个功能还包括一个包裹,在它上面建一个房子,并为它添加一个画龙点睛:

let buildAndCompleteHouse parcel = 
    parcel
    |> inspect
    |> buildWalls
    |> buildRoof
    |> paintWalls
    |> addFurniture
Run Code Online (Sandbox Code Playgroud)

很明显,这两个函数也是纯粹的,因为它们是纯函数的组合.现在我有一个包裹,让我们说niceParcel,我想将两个功能应用于它.但是,我想避免前三个子函数计算两次,因为它们需要花费大量时间进行计算,并且它们在两个函数之间共享.

我如何重构我的代码,以避免这些不必要的计算,同时保留这些具有明确含义的纯函数?

.net f# functional-programming numerical-computing

5
推荐指数
1
解决办法
229
查看次数