0

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

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 中的缩进规则?

4

1 回答 1

4

在与 的行上substr,您有一个空格字符串,后跟一个文字制表符,在与您的行上,skip您有相同的字符串,后跟四个空格。这些是不兼容的;实现这一点的一种强大、灵活的方法是在每行的开头使用完全相同的空白字符串将内容排列在一个块中。

但是,真正的规则是,正如您所问的那样,制表符将缩进级别提高到下一个八的倍数,而所有其他字符将缩进级别提高一。块中的不同行必须处于相同的缩进级别。do, where, let, 和of引入块(我可能忘记了一些)。

于 2012-12-06T18:22:31.250 回答