Haskell Parse error на 'let'

Так что я новичок в Haskell и мне нужно запрограммировать алгоритм Рабина Карпа. Я чувствую, что мой ответ должен сработать, но я продолжаю получать ошибку "parse error on '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

1 ответ

Решение

Вам не хватает =а также 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

Другие вопросы по тегам