我有一个非常简单的问题。我想在使用绑定运算符的代码块之后使用 where 子句,但出现编译错误。
这是一个简单的例子:
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
print list'
where list' = reverse list -- test1.hs:5:28: Not in scope: `list'
我可以对 list' 使用 let 子句,如
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
let list' = reverse list -- works of course
in print list'
但如果我可以使用 where 子句,我真的很喜欢它......
我也尝试过使用 do 表示法
main = do
putStrLn "where clause test:"
list <- return [1..10]
print list'
where list' = reverse list --test3.hs:5:30: Not in scope: `list'
同样的问题。在这些情况下我可以使用 where 子句吗?