haskell 混乱中的嵌套 Let 语法

Nested Let syntax in haskell confusion

main = let sumSquares = sum (map (^2) [1..100]) 
           squaredSum = sum [1..100] ^ 2 
           in sumSquares - squaredSum

Haskell 的新手,所以我一直在回顾 Project Euler。我知道我的解决方案是合理的,并且在我不打扰任何 lets 的情况下它会起作用。

出于某种原因,这给了我一条错误消息。你能帮我吗?谢谢!

您选择了命名此术语 main,但没有给出正确的类型。带有 main 项的 Haskell 模块应该用类型 IO () 来定义它,但是你给了它一个看起来像 Num a => a 的表达式,因为 - 发生此错误是因为 Haskell 正在寻找某种方法使 IO .. 成为 Num 的实例,但事实并非如此。

尝试给它命名。