たとえば、Data.Mapのインターンについてもっとよく理解したいと思います。マップに新しいバインディングを挿入すると、データが不変であるため、古いデータ構造に新しいバインディングを加えたものと同じ新しいデータ構造が返されます。
これがどのように達成されるのかを理解したいと思います。コンパイラは最終的に、たとえば数百万のバインディングを使用してデータ構造全体をコピーすることにより、これを実装しますか?このような場合、可変データ構造/配列(Data.Judyなど)または命令型プログラミング言語のパフォーマンスが向上すると一般的に言えますか?辞書/Key-Valueストアに関して、不変データには利点がありますか?