これが明らかな質問のように思われる場合は申し訳ありません。
ダイクストラやプリムなどのグラフ アルゴリズムのプライオリティ キュー + 隣接リストを実装するために、リスト {実際には整数とリストのタプル (Integer, [(Integer, Integer)])} の Data.map を作成していました。
Data.map はバイナリ ツリーを使用して実装されているので (私はそれを読みました)、マップ操作を実行するときに (ローテーションになると思います)、インタープリターがリストの深いコピーを行わず、参照の浅いコピーを行うことを確認したいだけです。リストの右?
n = noの場合、O(nlogn + mlogn)時間で実行されるhaskellでプリムアルゴリズムを実装するためにこれを行っています。頂点とm =いいえ。純粋に機能的な方法で、リストが優先キューに格納されている場合、アルゴリズムはその時間内に機能します。私がオンラインで見つけたほとんどの haskell 実装は、この複雑さを達成していません。
前もって感謝します。