我几乎无法区分"其中"和"让.. int"声明。 这是我的代码。我想要2种方式来打印5。
main = do
print x
where x = 5
let x = 5 in print x
第一个有效,但我在输入上得到了一个解析错误' let'" 这是缩进的问题,还是我的代码明显错误?
答案 0 :(得分:4)
where
总是结束陈述; where
之后什么都不应该发生。
所以,你可以这样写:
main = do
let x = 5 in print x
print x
where x = 5
这是有效的,因为where
子句结束了它应该属于的语句。您的代码无效,因为解析器希望在where x = 5
之后找不到任何内容,但会发现您的let
子句。
答案 1 :(得分:3)
你的代码错了。 where
子句必须出现在定义的末尾,而let
是一个表达式,可以在表达式有效的任何地方出现。