我想用一些let语句定义一个函数,但是我一直收到一个错误parse error on input 'let'
。我对Haskell还是个新手,所以我实际上看不出是什么导致了这个问题。用多个let块输入'let'解析错误
这里是我的功能:
myFunc :: ([String], Int) -> (Int, Int, Int) -> ([String], Int)
nextGuess (prev_string, prev_int) (a1, a2, a3) = (new_string, new_int)
let new_int_1 = if a3 - a1 < 0
then prev_int
else (filter (myPred1 a3 prev_string) prev_int)
let new_int_2 = if a2 - a1 < 0
then new_int_1
else (filter (myPred2 a2 prev_string) new_int_1)
new_int = filter (myPred3 a1 prev_string) new_int_2
我不会解释什么功能是应该做的,因为这是风马牛不相及的问题,我的主要问题是,有第一let
解析错误声明,我不知道为什么。
其他人已经回答了'let' ...'in'和'where'这里的区别。但是至于缩进,一个好的经验法则是,如果你只是在布局关键字(比如'do','let')之后换行+缩进,你不会陷入困境(并且不需要做很多事情) ,“哪里”,“案例”......“等等。 –