Haskell 哈斯克尔多线Lambdas

Haskell 哈斯克尔多线Lambdas,haskell,lambda,multiline,parse-error,Haskell,Lambda,Multiline,Parse Error,我正在learnyouahaskell.com学习Haskell,有这样一个例子: search :: (Eq a) => [a] -> [a] -> Bool search needle haystack = let nlen = length needle in foldl (\acc x - > if take nlen x == needle then True else acc) False (tails haystack)

我正在learnyouahaskell.com学习Haskell,有这样一个例子:

search :: (Eq a) => [a] -> [a] -> Bool  
search needle haystack =   
    let nlen = length needle  
    in  foldl (\acc x -
> if take nlen x == needle then True else acc) False (tails haystack) 
但当我用GHC尝试这段代码时,它给了我

error: parse error on input ‘-’
但它在这样的情况下起作用:

search :: (Eq a) => [a] -> [a] -> Bool  
search needle haystack =   
    let nlen = length needle  
    in  foldl (\acc x -> if take nlen x == needle then True else acc) False (tails haystack) 

Haskell有允许多行lambda的功能吗?还是我缺少了一些功能?

不要破坏
->

只要做:

search :: (Eq a) => [a] -> [a] -> Bool  
search needle haystack =   
   let nlen = length needle  
   in  foldl (\acc x ->
if take nlen x == needle then True else acc) False (tails haystack) 


允许您使用多行lambda。然而,你在最坏的地方分裂了队伍。
->
很重要!保持这一点,它应该会起作用。只是不要打断箭头-保持在一起
\acc x->
并缩进下一行您不能在单词或运算符中间插入换行符。将
->
运算符保持在一起并缩进下一行解决了问题。谢谢你的帮助!有人能把答案贴出来让我把它标记为已回答吗?
search :: (Eq a) => [a] -> [a] -> Bool  
search needle haystack =   
   let nlen = length needle  
   in  foldl (\acc x 
-> if take nlen x == needle then True else acc) False (tails haystack)