chainQuery :: (Enum a, Integral a, Ord b) => a -> b -> [c]
chainQuery n min = map length $ filter beatingLength $ map chain [1..n]
where
beatingLength :: [a] -> Bool
beatingLength xs = length xs > min
chain :: (Integral a) => a -> [a]
chain n
| n <= 1 = [n]
| even n = n:(chain $ div n 2)
| otherwise = n:(chain $ n * 3 + 1)
在上述爲什麼不GHC能夠推導出的「C」是一個Int通過查看長度類型定義的代碼示例?GHC不decucing的方式我想它想:-(
爲什麼GHC需要了解「b」什麼比它是一個奧德其他?
有沒有寫這個功能更好的辦法?
錘說,GHC是說「此用戶不演繹,我想他或她:-(方式」或許應該是這樣的錯誤消息。 –
fromIntegral允許我有更通用的類型,所以這就是我最終使用的。 –