、私は疑問に思っ:F番号:部分的な組み合わせと最適化を組み合わせることが可能であった場合は、今日の私のコード内の関数を見てみると一部のアプリケーションおよび事前計算
基本的にlet foo (X:float) y1 y2 dx =
y1 + (y2 - y1) * dx/X
を、ちょうど比適用 - その最初の3つのパラメータを所与のループ内では一般に同じである。
私はこれをしなかった場合、私は多分考えた:
let foo2 (X:float) y1 y2 dx =
let dy = (y2 - y1)/X
y1 + dy * dx
F#は賢い取得し、私は部分的に最初の3つのパラメータを適用するときに私のために最適化するが、それはモードをデバッグするだろう、ケースのように表示されません。 (私は正しい方法でテストするつもりはないとは思うが)。
質問は、これは問題ありませんか?そして、もしそうでないならば、それを実行する良い方法があります(2つのパラメータを持つ別の関数を書く以外に)?
これは、人が、 .Netの "PureAttribute"。これはコンパイラを最適化するために、 "Expensive"に置くことができます(私の説明の例とは異なり、印刷されなかったと仮定します)。これは、Haskellのように、すべてが純粋でコンパイラ/ランタイムが関数呼び出しを 'キャッシュ'することができる理由です。 私の個人的な意見は、システムが「魔法のように最適化する」ことを期待していることです。これはパイプの夢です。コードを高速にしたい場合は、氏のコンピュータにステップごとに記入してください。人間はいつも努力しなければならない。 – Brian
あなたのボーレートは私の脳のものとまったく同じです:) – Benjol