vor*_*192 2 primes haskell types
我在以下构造中遇到恼人的语法错误:
isPrime n = if numOfDivisors n == 0 then True else False
where numOfDivisors n = length $ [x | x <- [2..ceiling (sqrt n)], n `mod` x == 0]
Run Code Online (Sandbox Code Playgroud)
我怎么解决它?我是Haskell的新手,所以我不知道出了什么问题[2..ceiling (sqrt n)].
谢谢(抱歉我脑子不好).
C. *_*ann 10
您同时使用sqrt,并mod用n-首需要浮点型,后者需要整型.你可能想要后者,sqrt (fromIntegral n)而是使用.
其他一些未经请求的建议:
没有可能的理由if foo then True else False.只需单独使用布尔表达式.
函数参数在where子句的范围内,因此numOfDivisors不需要n作为参数.
不要length用来检查列表是否为空.null改为使用除数列表.