
OK. Again, not sure what going on here. Pattern looks OK to me.
Michael
=============================
import Control.Monad.Stateimport Data.Map
type Prefix = (String,String)type GeneratorState = State ((Map Prefix [String]),Prefix,[String])
non_word = "\n"
f key new old = new ++ old
buildMap :: GeneratorState (Map Prefix [String])buildMap = do (mp,(pfx1,pfx2),all@(w1:words)) <- get if (Prelude.null all) then {- No more words. Return final map (adding non_word for prefix). -} return (insertWithKey' f (pfx1,pfx2) [non_word] mp) else do {- Add word to map at prefix. Continue. -} put (insertWithKey' f (pfx1,pfx2) [w1] mp, (pfx2,w1), words) buildMap
=============================
*Main> :r[1 of 1] Compiling Main ( markov3.hs, interpreted )Ok, modules loaded: Main.*Main> fst $ runState buildMap (singleton ("\n","\n") [], ("\n","\n"), ["I","am","lost."])fromList *** Exception: Pattern match failure in do expression at markov3.hs:13:14-44
--- On Thu, 5/19/11, michael rice
type GeneratorState = (Map Prefix [String],Prefix,[String])
buildMap :: GeneratorState (Map Prefix [String])
You are trying to use a type alias (GeneratorState) as a type constructor. There may be other problems, but that leaps out. -----Inline Attachment Follows----- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe