我一直想学习 Haskell,所以最近我开始解决 ProjectEuler 问题。在编写以下因式分解代码时,我注意到调用(/ n)
返回一段Float
时间(n `div`)
返回一个Int
. 我认为中缀符号只是 Haskell 中的语法糖?有人可以解释发生了什么吗?我也很感激任何意见/建议/改进,谢谢。
import Data.List (sort)
factor :: Int -> [Int]
factor 0 = [1..]
factor n =
let f1 = [f | f <- [1..limit], n `mod` f == 0]
where limit = ceiling $ sqrt $ fromIntegral n
f2 = map (n `div`) f1 --vs. map (/ n) f1
in sort $ f1 ++ f2