Data.Array
Array
タイプの折り目を提供していません。 (CH 12)なぜHaskellは1次元配列の折り畳みを提供しないのですか?
が、その理由はArray
sがプログラマのニーズに基づいて異なる方法で折り畳むことができることと言われているすべての
まず、いくつかの種類があります折り畳みが意味をなさないまだ単一の要素に折りたたみたいかもしれませんが、行や列を折り畳むことも可能です。これに加えて、一度に1つの要素を折りたたむ場合、もはや横断のシーケンスは2つだけではありません。
正確にはList
ではありませんか?たとえば、次のように表現するのは非常に一般的です。多次元List
の行列ですが、一次元のために定義された折り目はまだあります。List
s。
私が欠けている繊細は何ですか?それは多次元Array
がArray
秒のArray
から十分に異なっていることですか?
編集:フム、でも多次元配列はData.Foldable
のインスタンスの形で、折り目が定義されていない[0]では、どのように引用実世界Haskellので収まるんこと?
[0] http://hackage.haskell.org/packages/archive/base/4.6.0.0/doc/html/Data-Foldable.html
多次元配列とネストされたリストの違いは、すべての配列が本質的に同じ型であることです。つまり、配列型、配列型(Int、Int)e、配列(Int、Int、Int)e ...です。したがって、1次元配列に対してのみ定義された関数を作ることはできませんが、 'foldr'はすべてのリストを連結して要素ごとに処理するのではなく、リストのリストを取り出してリストで処理します。 –