gpt4 book ai didi

haskell - 列表理解和类型问题 (Haskell)

转载 作者:行者123 更新时间:2023-12-02 14:21:48 26 4
gpt4 key购买 nike

我在以下构造中遇到恼人的语法错误:

isPrime n = if numOfDivisors n == 0 then True else False            
where numOfDivisors n = length $ [x | x <- [2..ceiling (sqrt n)], n `mod` x == 0]

我该如何修复它?我是 Haskell 新手,所以我不知道 [2..ceiling (sqrt n)] 有什么问题。

谢谢(抱歉我的大脑不好)。

最佳答案

您正在使用 sqrtmodn --第一个需要浮点类型,后者需要整型。您可能想要后者,并使用 sqrt (fromIntegral n)相反。

其他一些未经请求的建议:

  • 没有可能的理由这样做if foo then True else False 。只需单独使用 bool 表达式即可。

  • 函数参数的范围在 where 中子句,所以numOfDivisors不需要 n作为一个论点。

  • 不要使用length检查列表是否为空。使用null而是在除数列表上。

关于haskell - 列表理解和类型问题 (Haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13980911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com