[Haskell-beginners] 回复: a parse error....i can't fix it

anyzhen jiangzhen3s at qq.com
Fri Sep 9 17:12:11 CEST 2011


a ha ...
thanks    Daniel 
  
 
------------------ 原始邮件 ------------------
发件人: "Daniel Fischer"; 
发送时间: 2011年9月9日(星期五) 晚上11:06
收件人: "beginners"; 
抄送: "anyzhen"; 
主题: Re: [Haskell-beginners] a parse error....i can't fix it

 
On Friday 09 September 2011, 16:53:06, anyzhen wrote:
> sorry and please forget the name and what it is meaning for.
> just look at in syntax aspect
> 
> 
> the error : "parse error on input `|'
> Failed, modules loaded: none."
> 
> 
> 
> linerFind :: [Int] -> Int -> MaxSA -> MaxSA   --MaxSA is 
> MaximumSubarray linerFind xs len  ms1@(MaxSA l h m)             --
> (MaxSA leftPosition rightPosition maxsum)
> 
>   | h<len = keepFind ms1
> 
>                 where keepFind ms'@(MaxSA l' h' m')=
>                     let ms2@(MaxSA l2 h2 m2)= find' xs l' (h'+1) in
>                     if m < m2 then linerFind xs len ms2
>                     else keepFind ms2
> 
>   |otherwise = ms1                                      --compiler say
>   |error is in  this line

You must have the where clause after the guards,

linerFind ...
  | h < len = keepFind ms1
  | otherwise = ms1
    where
      ...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110909/552d2c8f/attachment.htm>


More information about the Beginners mailing list