0

私は機能を持っています:

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でインデントを正しく配置するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

3

ifは常にathenelseブランチの両方を必要とするため、おそらく、if filterLength == 2 then true else falseと同等のが必要filterLength == 2です。

于 2011-07-01T06:23:42.660 に答える
3

これはコンパイルされます:

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式も必要ありません。

于 2011-07-01T06:25:56.593 に答える