以下编译没有警告或错误.
factors n = [x | x<-[1..n], n `mod` x == 0]
perfects n = [x | x <- [1..n], x == sum (factors (init x))]
main = putStrLn "hello"
Run Code Online (Sandbox Code Playgroud)
即使我犯了错误.
perfects n = [x | x <- [1..n], x == sum (factors (init x))] -- incorrect
perfects n = [x | x <- [1..n], x == sum (init (factors x))] -- should have been
Run Code Online (Sandbox Code Playgroud)
静态类型检查在哪里进行救援?
我认为应该抓住错误的原因是:
factor显然期望一个Integral因为它的参数使用mod,而init返回aListx从绘制List …