pure function
次のような非常に単純な例の概念には問題ありません...
function addTwo(val){
return val + 2;
}
同じ引数を指定すると、同じ結果が得られ、参照透過性と優れた決定論的コードにつながります。
しかし、その後、私はこれらのような例に出くわしました(フリスビー教授のほとんど適切なガイドから取得しましたが、他のFP JS本で同様の例を見つけました)
//pure
var signUp = function(Db, Email, attrs) {
return function() {
var user = saveUser(Db, attrs);
welcomeUser(Email, user);
};
};
var saveUser = function(Db, attrs) {
...
};
var welcomeUser = function(Email, user) {
...
};
また、外部依存関係 (つまり、不純) と見なされない理由がわかりませんsaveUser
orへの呼び出しwelcomeUser
。
関数/IO の観点からは、signUp
常に「同じ」(同等の) 有線関数を返すことはわかっていますが、私には奇妙に感じます。
理由さえ理解するのは難しい
function multiplyBy(times){
return value => value * times;
}
const fiveTimes = multiplyBy(5);
fiveTimes(10);
と考えられpure
ます。返された関数 POV から、アクセスtimes
はスコープ チェーンのルックアップであり、すぐ外側のスコープから、またはそれを超えて (グローバル スコープのように) 来る可能性があります。
これに光を当てたい人はいますか?