2

JavaScriptでは、新しい関数を生成するために f と g の 2 つの関数を受け取る関数を使用して、関数合成を定義できます。

function o(f, g) {
  return function(x) {
   return f(g(x));
  }
 }

これは明らかなようですが、私の質問は、ランタイム インタープリター/コンパイラーが実際にf(g(x)) を計算するかどうかです。

多くの要素を持つ配列のような大きなデータがあり、前の計算によってf(g(x))として以前に構成された関数 o は、構成されていない f(g(x ) )よりも高速であるとしますか?

おそらく、この場合、f(g(x))の単なるマクロ表現としてのo(f, g ) ?

で、マクロなら性能はあまり変わらないかも?

実行環境にもよるかもしれませんが、特にChrome/node.jsのV8エンジンに興味があります。

遅延評価戦略の言語としての Haskell は、理論的には関数を構成しますが、私は正しいですか? GHCは実際に計算して関数を構成しますか?

4

2 に答える 2