Haskell不正确的缩进

时间:2012-12-06 18:10:07

标签: haskell indentation

我有一个错误说“可能不正确的缩进”

boyerMooreSearch :: [Char] -> [Char] -> [Int] -> Int
boyerMooreSearch string pattern skipTable 
                                    | skip == 0                                     = 0
                                    | skip > 0 && (string length > pattern length)  = boyerMooreSearch (substring string skip (string length)) pattern skipTable
                                    | otherwise                                     = -1
                                    where 
                                    subStr = (substring 0 (pattern length)) 
                                    skip = (calculateSkip subStr pattern skipTable)

它有什么问题吗?任何人都可以解释Haskell中的缩进规则吗?

1 个答案:

答案 0 :(得分:4)

substr的行上,您有一个空格字符串,后跟一个文字制表符,在skip的行上,您有相同的字符串,后跟四个空格。这些是不相容的;一个强大而灵活的方法就是在每个行的开头用一个相同的空格字符串排成一行。

然而,真正的规则,因为你问,是标签将缩进级别增加到下一个八的倍数,而所有其他字符将缩进级别增加一。块中的不同行必须处于相同的缩进级别。 dowhereletof会引入块(我可能会忘记一些)。