[英]Haskell let in/where and if indentation
我有一个 function:
isSimpleNumber :: Int -> Bool
isSimpleNumber x = let deriveList = map (\y -> (x `mod` y)) [1 .. x]
filterLength = length ( filter (\z -> z == 0) deriveList
....
在 filterLength 我想检查多少 filterLength 之后,我尝试:
isSimpleNumber :: Int -> Bool
isSimpleNumber x = let deriveList = map (\y -> (x `mod` y)) [1 .. x]
filterLength = length ( filter (\z -> z == 0) deriveList
in if filterLength == 2
then true
我得到错误:
parse error (possibly incorrect indentation)
Failed, modules loaded: none.
如何使用 if 和 in 正确放置缩进?
谢谢你。
if
总是需要then
和else
分支,因此您可能需要if filterLength == 2 then true else false
,这相当于filterLength == 2
。
这将编译:
isSimpleNumber :: Int -> Bool
isSimpleNumber x = let deriveList = map (\y -> (x `mod` y)) [1 .. x]
filterLength = length ( filter (\z -> z == 0) deriveList )
in filterLength == 2
main = print $ isSimpleNumber 5
在“deriveList”之后缺少一个结束“)”。 您也不需要 if-then-true 表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.