3

ここでの議論のいくつかを読み、他の説明へのリンクをたどりましたが、関数型プログラミングと非FP討論。私が理解しているように、基本的な議論は関数の純粋な数学の定義に戻ります。これにより、関数はドメイン メンバーを 1 つの範囲メンバーのみにマップします。これは、コンピューター コード関数に特定の入力が与えられた場合と比較されます。つまり、常に同じ出力が生成されます。つまり、使用ごとに変化しません。つまり、関数の状態は、ドメインから範囲へのマッピング動作のように変化しません。 .

すると、頭がぼんやりします。これが例です。xy フィールドに閉じたブロックのようなポリゴンを表示したいとしましょう。GIS ソフトウェアでは、すべてが有向の閉じたグラフとして格納されていることを理解しています。つまり、正方形は 4 つのベクトルであり、それらの頭と端が接続されています。生データ表現は、各ベクトルの個々のデカルト始点と終点です。そしてもちろん、これらすべての座標セットを「処理」する機能がソフトウェアにあるかもしれません。良い。しかし、数学的な方法で各多角形を表す場合はどうでしょうか。たとえば、正の x、負の y 象限にある四角形は次のようになります。

Z = {(x,y) | 3 <= x <= 5, -2 <= y <= -1}

したがって、多くの Z のような関数があり、それぞれが個々の多角形を表現します。私の行列計算は得意ではありませんが、これらの「関数」は行列として表現できるかもしれません。. . しかし、私は脱線します。

したがって、通常の生のベクトル データ メソッドでは、座標の各セットを処理してから各ポリゴンを描画する (そしてポリゴンの変更を処理する) ときに「状態を変更する」関数がコードに 1 つあります。 -only-one-Z-like-function-per-polygon メソッドは、「状態を変更しない」ルールを正確に保持しているように見えます。右?それとも私はここから離れていますか?昔ながらの1機能処理の生座標データも、ドメイン範囲の純度の法則を変更していないようです。よくわかりません....

私のインスピレーションの一部は、ピクセルのラックをバタンと閉める代わりに、各「フレーム」が画像全体、エッジ、色、グラデーション、など これは密接な関係ですか?私は、たとえば、多角形のストリート マップ (都市ブロックなど) を何らかの方法で表現したい理由を理解しようとしていると思います。関数型言語の支持者が、数学関数は純粋で安全で優れたものであり、最終的にはユートピア的であるという考えの周りで踊っているのを耳にします。一方、非 FP ソフトウェア関数は、ボーグのような至福から私たちを遠ざける、ある種のずさんなクラッジです。

しかし、さらに混乱するのは、FP 対非 FP に対するメモリ管理です。私がよく耳にすること (並列プログラミングなど) では、FP は、たとえば C/C++ プログラムほど「メモリ状態」を変更していないということです。これは、データベースやメモリの場所にデータを出し入れするのではなく、文字通りすべてが仮想メモリ プールに置かれている Google ファイル システムのようなものですか? どういうわけか、これらすべてが関連しています。したがって、完全な FP プログラムは、1 つのタスクを実行する 1 つの関数 (多くのサブ関数で構成されている可能性があります) にすぎないように思われます。

4

1 に答える 1