1

所以我是 Haskell 的新手,我必须编写 Rabin Karps 算法。我觉得我的答案应该有效,但是我在编译时不断收到“'let' 上的解析错误”错误。谁能帮帮我。

这是我的代码:

import Data.Char

hash :: String -> Int
hash [] = -1
hash (x:xs) = ((ord x))

rabinKarp :: String -> String -> Bool
rabinKarp [] _ = False
rabinKarp mainString patternString
    let
     hashPattern = hash patternString
     hashMain = hash (take (length pattern) mainString)
    if hashPattern == hashMain
    then True
    else rabinKarp (drop 1 mainString) patternString
4

1 回答 1

5

你错过了一个=,还有一个in

rabinKarp mainString patternString =
    let
     hashPattern = hash patternString
     hashMain = hash (take (length pattern) mainString)
    in if hashPattern == hashMain
     then True
     else rabinKarp (drop 1 mainString) patternString

编辑:in

于 2012-12-17T11:35:29.210 回答