私は、関数プログラミングやライブラリでは比較的新しいですが、ramda.jsなどのライブラリは非常に便利ですが、カリング機能の可能性があります。カレー化関数:それらを最適化する方法
次
const myFun = R.curry(
(arg1, arg2) => {
let calculated = anotherFun(arg1)
//do something with calculated and arg2
return calculated * 5 + arg2
}
)
const anotherFun = (arg) => {
console.log("calling anotherFun");
return arg + 1
}
var partial = myFun(1)
console.log(partial(2))
console.log(partial(3))
<script src="//cdn.jsdelivr.net/ramda/0.22.1/ramda.min.js"></script>
として、私は非常に頻繁に物事を書くカリー化関数を使用しますが、明らかに、このような状況anotherFun
に私はarg1
にし、結果として場合でもpartial
を呼び出すたびに呼ばれcalculated
常に同じです。
この動作を最適化する方法はありますか?anotherFun
はargsが変更されたときにのみ呼び出しますか?
私の心を横断する唯一の方法は、この
const myFun = R.curry(
(calculated, arg2) => {
return calculated * 5 + arg2
}
)
const anotherFun = (arg) => {
console.log("calling anotherFun");
return arg + 1
}
var calculated = anotherFun(1)
var partial = myFun(calculated)
console.log(partial(2))
console.log(partial(3))
<script src="//cdn.jsdelivr.net/ramda/0.22.1/ramda.min.js"></script>
であるが、このように私はMYFUNに渡される引数を変更する必要があり、これは外部のAPIを複雑