gpt4 book ai didi

javascript - 在纯函数 javascript 中预先计算值

转载 作者:行者123 更新时间:2023-12-04 10:05:49 28 4
gpt4 key购买 nike

我有这样的代码:

let createArray = (A) =>
A.map((val) =>
val * heavyFn(A.length)
)

哪里 heavyFn(X)是资源消耗函数,它总是为常量 X 返回相同的值。我相信像 Haskell 这样优秀的函数式语言对此进行了优化,所以 heavyFn(X)每个结果只调用一次,但 javascript 显然没有。

我可以这样优化它:
let createArray = (A) => {
const H = heavyFn(A.length);
return A.map((val) =>
val * H
)
}

但是 是否可以在纯函数 javascript 中对此进行编码? 我的意思是没有变量,只有参数,没有显式返回,没有大括号,只是嵌套的箭头函数表达式。只是出于好奇,如果 javascript 具有功能。

我想出的唯一方法是
let createArray = A => [heavyFn(A.length), ...A].map((val,i,H) =>
val * H[0]
).slice(1)

但这似乎是一个黑客。

最佳答案

使用 curry 函数:

const mult = x => y => x * y;
const createArray = A => A.map(mult(heavyFn(A.length)));

关于javascript - 在纯函数 javascript 中预先计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598035/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com