好的,所以我正在尝试编写一个 Haskell 函数,它可以有效地检测给定Int
. 根据这个问题中给出的解决方案,我得到了以下信息:
-- returns a list of the factors of n
factors :: Int -> [Int]
factors n = sort . nub $ fs where
fs = foldr (++) [] [[m,n `div` m] | m <- [1..lim+1], n `mod` m == 0]
lim = sqrt . fromIntegral $ n
可悲的是,GHCi 告诉我在包含etc. 等No instance for (Floating Int)
的行中有。lim =
我已经阅读了这个答案,并且建议的解决方案在直接输入 GHCi 时有效 - 它允许我sqrt
调用Int
. 但是,当在我的函数中放置看起来完全相同的代码时,它就会停止工作。
我对 Haskell 比较陌生,所以非常感谢您的帮助!