正しいデータコンテナを使用することは、Haskellではちょっと難しいかもしれません.2次元グリッドアプリケーションでは、UArray
を使用すると適切と考えられます。しかし、限り私はUArray
のfoldable
のインスタンスではない(Data.Array.IArray
でもData.Array.Unboxed
でもない)と言うことができます。ボックス化されていない配列がfoldableのインスタンスではないのはなぜですか?
これには理由がありますか?私は自分自身のヘルパー機能を作ることができますが、foldable
インスタンスが存在しないと、おそらく私はすべきではないことが示唆されます。
少なくともGHCでは 'Array'は' GHC.Arr'の 'base'で定義されています。 'array'パッケージはこの型を再エクスポートします。 'Foldable'インスタンスは、配列モジュールではなく、[' Data.Foldable'](https://hackage.haskell.org/package/base-4.8.2.0/docs/src/Data.Foldable.html)で定義されています。しかし 'UArray'は' array'パッケージの 'Data.Array.Base'で定義されています。 'array'自体は、私が見る限り、' Foldable'インスタンスを全く定義していません。 – user2407038
私はフードの中で何が起きているのかよく分かりませんが、 'Data.Array.IArray'パッケージに' Array'型の 'Foldable'インスタンスが含まれているようです。実際にそこにコード化されているかどうかは関係ありません。これは、利用可能なものがあれば 'UArray'型のインスタンスも提供しないということは愚かなようです。それは監視ですか? – user668074