Reputation: 591
I have a code as:
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 am getting error:
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])
Not able to figure out why??
Any ideas??
Thanks.
Upvotes: 11
Views: 34253
Reputation: 3683
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;
}
Upvotes: 16