2016-05-15 68 views
3

使用Haskell,我正在HackerRank上練習,以便熟悉這門語言。對於我目前正在做的particular problem,我將不得不做一個矩陣乘法。與Python中我可以使用Numpy的情況不同,我檢查了Ideone,看起來Haskell沒有插入任何線性代數包,所以我將手動完成。如果我在F#中做這個問題,我只會使用一個普通的數組,但在Haskell中,我不確定它有多個數組類。我正在尋找一些關於我應該在這裏進行調查的建議,因爲我迄今爲止總共有三天的語言經驗。Haskell - 用於稀疏矩陣乘以什麼數據結構?

我也想知道元組是堆棧還是堆在Haskell中分配,因爲我可能必須使用它們來編碼(index,value)位置。

+1

矩陣的CSR格式[矢量](https://hackage.haskell.org/package/vector)。 – Zeta

+0

不幸的是,'vector'不是標準庫的一部分。 Ideone也沒有,所以我不能用那個。 –

+1

使用['Array'](https://downloads.haskell.org/~ghc/latest/docs/html/libraries/)。 – Zeta

回答

1

爲了回答我自己的問題,Haskell中對於普通數組的goto類應該是Data.Vector.Unboxed。 Haskell在盒裝和非盒裝數組之間有所區別,儘管我知道它仍然以某種方式讓我驚訝,在矢量矢量中,外部矢量必須是盒裝類型。

另外關於元組,每個元組的向量都會被編譯爲向量的元組,這意味着元素將被分配到堆上的一個連續區域。