テキスタイルにインデックスを付ける再帰関数があり、それを巨大なテキストファイルに使用すると、スタックスペースがオーバーフローします。再帰部分を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