質問岡崎以来の純粋に機能的なデータ構造の新機能 (論理プログラミングではなく)、およびjbappleの叙事詩の答えは、私は最近、これが見つけるために私を導いた。に興味を持ってきたものですこれは、関数型プログラミングでは、差分リストを使用して言及した差分リストの Haskellのための実装を。2つの質問があります(StackExchangeで2つの異なる質問をする必要がある場合は、ご容赦ください。)。
簡単な質問は、Haskellライブラリにあるもの以外に、関数型プログラミングや実装の違いリストの学術的検討を知っている人はいますか?jbappleの答えは、差分リストの引用を提供しませんでした(ロジックプログラミングの差分リストは、伝承と、Around Here Somewhere(TM)にあるいくつかのソースにあります)。Haskellの実装を見つける前に、そのアイデアが論理から関数型プログラミングに飛躍したことを知りませんでした。確かに、Haskellの差分リストは高階関数の自然な使用であり、ロジックプログラミングのものとはまったく異なる動作をしますが、インターフェイスは確かに似ています。
私が聞きたかったのは、もっと興味深い(そしてずっと曖昧な)ものは、前述のHaskell差分リストライブラリの主張された漸近的上限かどうかです。正しい/妥当と思われるです。私の混乱は、怠inessな複雑さの推論について明らかなものを見逃しているためかもしれませんが、大きなデータ構造上の置換(またはクロージャー形成、変数ルックアップ、または何か)が常に一定の時間がかかる場合にのみ、主張された境界が意味をなします。または、「キャッチ」とは、単に「ヘッド」と「テール」の実行時間に制限がないということです。これらの操作は、遅延計算/置換の任意の山を耕さなければならないからです。