【发布时间】:2012-07-08 22:01:56
【问题描述】:
我有一个递归函数,它索引一个纺织品,如果我将它用于巨大的文本文件,我会得到一个堆栈空间溢出。我想因为我把递归部分放在 let 部分我可以避免这个堆栈空间溢出,但我仍然得到它。使用此函数避免堆栈空间溢出的最佳方法是什么?
--lines to Map
parseLinesToWordEntryMap :: Int -> [String] -> M.Map Word [TextLocation] -> (M.Map Word [TextLocation])
parseLinesToWordEntryMap lineNumber [] wordEntryMap = wordEntryMap
parseLinesToWordEntryMap lineNumber (x:xs) wordEntryMap =
let
lineNumber' = lineNumber-1
wordEntryMapRec = parseLinesToWordEntryMap lineNumber' xs wordEntryMap
in
parseLineToWordEntryMap lineNumber x wordEntryMapRec
【问题讨论】:
-
了解
parseLineToWordEntryMap的定义会有所帮助
标签: haskell recursion stack-overflow tail-recursion