コンテキスト
この質問の文脈は、 Erlangを使用して、進化的アルゴリズムの形式であるGene Expression Programming (GEP)を試してみたいということです。GEPは、「Karva表記」と呼ばれる文字列ベースのDSLを利用します。Karva表記は、式解析ツリーに簡単に変換されますが、変換アルゴリズムは、可変オブジェクトを持つ実装を想定しています。不完全な部分式は、変換プロセスの早い段階で作成され、独自の部分式は、後で、次の値で埋められます。それらが作成された時点では不明です。
Karva表記の目的は、高価なエンコード手法や遺伝暗号の修正なしに、構文的に正しい式が作成されることを保証することです。問題は、Erlangのような単一代入プログラミング言語では、各サブ式が入力されるたびに式ツリーを継続的に再作成する必要があることです。これには安価な--O(n)?-操作を更新し、指数関数的な時間で完了するものに変換します(私が間違っていない限り)。K式を式ツリーに変換するための効率的な関数アルゴリズムが見つからない場合、GEPの魅力的な機能の1つが失われます。
質問
K式の変換の問題がかなりあいまいであることを理解しているので、本質的に機能しないアルゴリズム(可変データ構造を利用するアルゴリズム)を機能しないアルゴリズムに変換する方法についてのアドバイスが必要です。純粋な関数型プログラミング言語は、コンピューターサイエンスの初期に作成された、必要なパフォーマンス特性を得るために可変性に依存するアルゴリズムとデータ構造の多くをどのように適応させるのでしょうか。