Pete Kazmier wrote:
I've modified my Norvig spelling corrector to use a trie instead of
Data.Map in the hopes of improving performance.  Plus, this is fun and
a great learning exercise for me.  Unfortunately, when I load my trie
with a large amount of data, I get a stack overflow.  It's unclear to
me why this is happening.  I specifically use foldl' to avoid this
situation when building my trie.  Could someone shed some light on the
situation for me?

Here is the code:

module Main where
import Data.List (foldl')
import Data.Maybe (maybe, fromMaybe)
import Prelude hiding (lookup)
import qualified Data.Map as M

data Trie a = T (Maybe a) (M.Map Char (Trie a)) deriving (Show)

Try making it strict in the Map field..

> data Trie a = T (Maybe a) !(M.Map Char (Trie a)) deriving (Show)

Regards
--
Adrian Hey
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to