2016-05-15 13 views
3

ハスケルを使用して、私は言語に慣れるためにHackerRankの演習を行っています。私が現在やっているparticular problemについては、私は行列乗算をしなければならないでしょう。 Numpyを使うことができるPythonとは違って、私はIdeoneをチェックしました。そして、Haskellには線形代数パッケージが組み込まれていないようですので、私はそれを手で行います。私がこの問題をF#でやっていたのであれば、単純な配列を使っていましたが、Haskellではさまざまな配列クラスがあるとは分かりません。私はこれまでに3日間のトライアルを経験していたので、ここで調べるべきことについていくつかのアドバイスを探しています。Haskell - 疎な行列乗算に使用するデータ構造は何ですか?

タプルがスタックであるかHaskellで割り当てられたヒープであるかどうかは、(index,value)の位置をエンコードするために使用しなければならないかもしれないので、私も疑問に思います。

+1

ベクトルの['vector'](https://hackage.haskell.org/package/vector)のCSR形式です。 – Zeta

+0

残念ながら、 'vector'は標準ライブラリの一部ではありません。イデオンもそれを持っていないので、私はそれを使うことはできません。 –

+1

それはあなたに['Array'](https://downloads.haskell.org/~ghc/latest/docs/html/libraries/)を残します。 – Zeta

答えて

1

私自身の質問に答えるために、プレーンな配列のHaskellのgotoクラスはData.Vector.Unboxedです。 Haskellはボックス型と非箱型の配列を区別していますが、それでもまだベクトルのベクトルでは、何らかの形で外のベクトルがボックス型でなければならないことに私は驚きました。

タプルについても、文書ごとに効率を上げるために、タプルのベクトルはタプルのベクトルとしてコンパイルされます。これは、要素がヒープ上の連続領域に割り当てられることを意味します。

関連する問題