Haskell: variable not to scale

I have code like:

main = interact $ show . maxsubseq . map read . words maxsubseq :: (Ord a,Num a) => [a] -> (a,[a]) maxsubseq = snd . foldl f ((0,[]),(0,[])) where f ((h1,h2),sofar) x = (a,b) where a = max (0,[]) (h1 + x ,h2 ++ [x]) b = max sofar a 

But I get an error message:

 maxSub.hs:6:17: error: Variable not in scope: h1 maxSub.hs:6:22: error: Variable not in scope: x maxSub.hs:6:25: error: Variable not in scope: h2 :: [t1] maxSub.hs:6:32: error: Variable not in scope: x maxSub.hs:7:9: error: Variable not in scope: sofar :: (t, [t1]) 

It is impossible to understand why ???

Any ideas?

Thanks.

+7
haskell
source share
1 answer
 main = interact $ show . maxsubseq . map read . words maxsubseq :: (Ord a,Num a) => [a] -> (a,[a]) maxsubseq = snd . foldl f ((0,[]),(0,[])) where f ((h1,h2),sofar) x = (a,b) where a = max (0,[]) (h1 + x ,h2 ++ [x]) b = max sofar a 

Formats really matter in Haskell ...

Perhaps this looks better:

 main = interact $ show . maxsubseq . map read . words maxsubseq :: (Ord a,Num a) => [a] -> (a,[a]) maxsubseq = snd . foldl f ((0,[]),(0,[])) where f ((h1,h2),sofar) x = (a,b) where { a = max (0,[]) (h1 + x ,h2 ++ [x]); b = max sofar a; } 
+12
source share

All Articles