Haskell:变量不在范围内

Zub*_*dva 10 haskell

我有一个代码:

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
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

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])
Run Code Online (Sandbox Code Playgroud)

无法弄清楚为什么?

有任何想法吗??

谢谢.

Fre*_*ang 15

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
Run Code Online (Sandbox Code Playgroud)

格式在Haskell中真的很重要......

也许这看起来更好:

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;
              }
Run Code Online (Sandbox Code Playgroud)