小编meo*_*oid的帖子

有没有办法将Maybe构造函数应用于具有泛型的每个记录字段?

我有两种数据类型,第二种是第一种副本,但每个字段都有Maybe.

data A = {a :: Int, b :: String}
data B = {c :: Maybe Int, d :: Maybe String}
Run Code Online (Sandbox Code Playgroud)

有没有办法发挥作用

f :: A -> B
g :: B -> A -> A
Run Code Online (Sandbox Code Playgroud)

对领域本身没有任何了解?(如果第一个参数的值为nothing,g则将从第二个参数中取默认值)

generics haskell types

4
推荐指数
1
解决办法
269
查看次数

为什么haskell的矩阵乘法会花费这么多内存?

我需要乘以[2 ^ 14 x 2 ^ 14]个矩阵.但首先,让我们谈谈[2 ^ 12 x 2 ^ 12]矩阵.我需要多少内存?假设它是双矩阵,所以我需要8个字节用于一个元素.

((2 ^ 12*2 ^ 12*8)/ 2 ^ 20)*3 = 384 MiB

这是最糟糕的情况,当我需要将所有三个矩阵存储在内存中时.

haskell需要多少内存?让我们来看看.

-> let m n = matrix (2^n) (2^n) ( \(i, j) -> (fromIntegral i) * (fromIntegral j) ) :: Matrix Double
-> let p n = let r = m n in multStd2 r r ! (n,n)
-> p 12
3.299742941184e12
(4.84 secs, 1,991,404,304 bytes)
Run Code Online (Sandbox Code Playgroud)

它是~2 GiB.为什么这么糟糕,除了使用C++我该怎么办?

UPD:

我正在使用标准的haskell的Data.Matrix模块.

https://hackage.haskell.org/package/matrix

haskell matrix

0
推荐指数
1
解决办法
166
查看次数

标签 统计

haskell ×2

generics ×1

matrix ×1

types ×1