我有一个非常简单的问题。我想在使用绑定操作符的代码块后面使用where子句,但是出现编译错误。Haskell:我可以使用绑定运算符(>> =)在块之后使用where子句吗?
下面是一个简单的例子:
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
print list'
where list' = reverse list -- test1.hs:5:28: Not in scope: `list'
我可以使用列表中的let子句”作为
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
let list' = reverse list -- works of course
in print list'
,但我真的很喜欢它,如果我可以使用where子句。 ..
我也试图与做记号
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子句吗?
lambda抽象是一个表达式,不是声明或绑定,尽管它可以绑定新名字... – ephemient 2009-07-21 04:26:56
哇,谁-1?我认为这是正确的,如果不够完整的话。 – ephemient 2009-07-21 04:27:52
它不相关。 OP想要使用“list”,这是来自一堆monadic计算的结果;不是来自monad外部的值 – newacct 2009-07-21 04:47:36