2011-07-01 6 views
0

私が機能を持っている場合、/はどこで聞かせてHaskellのインデント

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

ありがとうございます。

答えて

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

3

常にifニーズの両方thenelse支店、あなたはおそらくfilterLength == 2に相当する、if filterLength == 2 then true else falseを必要とするようにします。