繁体   English   中英

Haskell 让/在哪里以及如果缩进

[英]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总是需要thenelse分支,因此您可能需要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM