Hi all,
I have a simple piece of code which is giving me stack overflow. I guess I need
to make it stricter sowhere but I can't figure out extactly where. So I thought
I'd ask the experts.
import Data.List (foldl')
import Control.Monad.State.Strict
hammingDistance [] _ = 0
hammingDistance _ [] = 0
hammingDistance (x:xs) (y:ys) | x==y = hammingDistance xs ys
| otherwise = 1 + hammingDistance xs ys
meanHammingDistanceM xss yss = evalState (mhd xss yss) (0,0)
mhd xss yss = do
for xss $ \xs ->
for yss $ \ys -> do
modify (\ (sum,count) -> ((,) $! hammingDistance xs ys + sum) $!
count + 1)
(sum,count) <- get
return $ fromIntegral sum/fromIntegral count
where for = flip mapM_
--
Grzegorz
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe