小编Cha*_*rer的帖子

列出monad变压器

我需要使用list monad转换器.我读过,有潜在问题ListT IOControl.Monad.List,因为IO是不可交换的,所以我期待在ListT做的权利.但我得到了一些意想不到的行为.

考虑这个简单的测试:

test = runListT $ do
  x <- liftList [1..3]
  liftIO $ print x
  y <- liftList [6..8]
  liftIO $ print (x,y)
Run Code Online (Sandbox Code Playgroud)

使用Control.Monad.List:

Main> test
1
(1,6)
(1,7)
(1,8)
2
(2,6)
(2,7)
(2,8)
3
(3,6)
(3,7)
(3,8)
[(),(),(),(),(),(),(),(),()]
Run Code Online (Sandbox Code Playgroud)

使用"ListT右对齐":

Main> test
1
(1,6)
Run Code Online (Sandbox Code Playgroud)

这是"ListT做得对"的问题,还是我只是错误使用它?有首选替代方案吗?

谢谢!

monads haskell generic-list monad-transformers

14
推荐指数
1
解决办法
1164
查看次数

我怎样才能帮助GHC中的SpecConstr?

我正在使用GHC 7.4.1来尝试编译使用Repa的程序.但是在编译过程中,我的内存耗尽了.有了ghc -v,我可以看到它陷入了SpecConstr阶段.

SpecConstr是GHC的Core-to-Core转换之一.西蒙佩顿琼斯有一个很好的描述在这里,而且有一些代码在这里,但它是相当缓慢的去为我,因为我不是很熟悉,GHC的内部运作.

我希望能够以某种方式帮助编译器 - 有没有办法告诉它哪里被困?或者,有没有办法在这个阶段限制内存使用,直到我可以在更大的机器上重新编译?

谢谢,乍得

haskell ghc repa data-parallel-haskell

11
推荐指数
1
解决办法
454
查看次数

cabal无法读取bytestring cabal文件,用ghc 7.4.1

我刚刚在32位linux上从GHC 7.2.2升级到7.4.1.安装很顺利,但cabal-install并不开心:

$ cabal update
Downloading the latest package list from hackage.haskell.org
$ cabal install repa
Resolving dependencies...
cabal: Couldn't read cabal file "bytestring/0.9.2.1/bytestring.cabal"
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的cabal版本:

$ cabal --version
cabal-install version 0.10.2
using version 1.10.1.0 of the Cabal library
Run Code Online (Sandbox Code Playgroud)

谢谢!

haskell ghc

7
推荐指数
1
解决办法
764
查看次数

如何使用Haskell中的策略编写并行缩减?

在高性能计算中,总和,产品等通常使用"并行缩减"来计算,该"并行缩减"采用n个元素并在O(log n)时间内完成(给定足够的并行度).在Haskell中,我们通常使用折叠进行此类计算,但评估时间在列表长度中始终是线性的.

Data Parallel Haskell内置了一些内容,但是在列表的通用框架中呢?我们能做到Control.Parallel.Strategies吗?

所以,假设f是关联的,我们如何写

parFold :: (a -> a -> a) -> [a] -> a

那么parFold f xs只需要时间对数length xs吗?

parallel-processing haskell

6
推荐指数
1
解决办法
2315
查看次数