好的,所以我正在嘗試編寫一個Haskell函數,它可以有效地檢測給定的所有因子Int
。根據關中this question給出的解決方案,我有以下幾點:Haskell sqrt類型錯誤
-- 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有含lim =
等等,等等線
我讀過this answerNo instance for (Floating Int)
通知我,並且提出的解決方案在直接輸入GHCi時起作用 - 它允許我通過Int
致電sqrt
。但是,當我的函數中看起來完全相同的代碼時,它停止工作。
我對Haskell比較新,所以我非常感謝幫助!
輝煌,謝謝!我已經將lim的定義修改爲lim = floor。 sqrt。 fromIntegral $ n',現在該函數完美工作。 –
順便說一句,有一個內置的函數'你的foldr(++)[]':'concat' – kaan