space-leak

    3热度

    1回答

    我在理解Haskell懒惰评估时遇到困难。 我写了简单的测试程序。它读取4行数据,并且 第二和第四输入行有很多数字。 consumeList :: [Int] -> [Int] -> [Int] consumeList [] _ = error "hi" -- to generate heap debug consumeList (x:xs) y = consumeList xs y mai

    0热度

    1回答

    道歉,如果这太具体,我在这里是新的,不完全确定什么是合理的。我几个小时一直在抨击这个问题,没有任何可以证明的问题。下面的代码是我实现一个有竞争力的编程问题。 module Main where import Data.List (foldl', groupBy) import Debug.Trace type Case = (Int, [(Int, Int)]) type Soln =

    8热度

    1回答

    我想用Haskell编写一个高效的Floyd-Warshall实现方法,使用Vector s来希望获得良好的性能。 实现非常简单,但不是使用三维| V |×| V |×| V |矩阵,使用2维向量,因为我们只读过以前的k值。 因此,该算法实际上只是传递2D矢量并生成新的2D​​矢量的一系列步骤。最终的2D矢量包含所有节点(i,j)之间的最短路径。 我的直觉告诉我,这将确保之前的2D载体的每一步之前

    22热度

    2回答

    我键入此代码到解释器和存储器被迅速消耗: last [1..10^7] `seq`() 我不能看到为什么这需要比O(1)空间更多。如果我这样做只是(这应该是一样的,因为显示力量薄弱头部正常形态,所以以次是多余的?): last [1..10^7] ...它工作正常。 我无法在解释器之外重现这种情况。 这是怎么回事? 这里有一些测试用例: http://hpaste.org/69234 注意

    1热度

    2回答

    前几天我发布了这个问题:Haskell performance using dynamic programming,并建议使用ByteStrings而不是Strings。在使用ByteStrings实现算法后,程序崩溃,超出内存限制。 import Control.Monad import Data.Array.IArray import qualified Data.ByteString a

    0热度

    1回答

    Here is the full repository。这是一个非常简单的测试,它使用postgresql-simple数据库绑定将50000个随机事件插入到数据库中。它使用MonadRandom并可以生成事物。 Here is the lazy Thing generator。 insertThings c = do ts <- genThings withTransacti

    1热度

    1回答

    为了两个不同的数据结构的值比较,我已经实现了布伦特的“teleporting turtle”算法的变体,该算法映射到所有通过N树的深度路径,用我自己的回溯算法进行回滚循环,而不排除与循环路径部分重叠的非循环路径。从所有外观来看,我的算法是正确的(尽管我觉得我实际上应该认为是,尽管我没有背景来证明代码的任何背景),但是我今天注意到当试图运行1000000次相同测试的循环时, (由testCount控

    25热度

    3回答

    最近我一直在使用Writer Monad,并且我遇到了 看起来是空间泄漏。我不能说我完全理解这些事情,所以我想知道这里发生了什么,以及如何解决这个问题。 首先,这里我怎么能触发此错误: import Control.Monad.Writer import Data.Monoid foo :: Integer -> Writer (Sum Integer) Integer foo 0 = r

    18热度

    2回答

    我已经读过很多次,对Haskell的懒惰评估有时会导致空间泄漏。什么样的代码会导致空间泄漏?如何检测它们?部分程序员可以采取哪些预防措施来避免它们?