小编Fre*_*ois的帖子

Haskell:我可以在带有绑定运算符(>> =)的块之后使用where子句吗?

我有一个非常简单的问题.我想在使用绑定运算符的代码块之后使用where子句,但是我得到了编译错误.

这是一个简单的例子:

main =
    putStrLn "where clause test:" >>
    return [1..10] >>= \list ->
    print list'
        where list' = reverse list -- test1.hs:5:28: Not in scope: `list'
Run Code Online (Sandbox Code Playgroud)

我可以使用let子句作为列表'

main =
    putStrLn "where clause test:" >>
    return [1..10] >>= \list ->
    let list' = reverse list -- works of course
    in print list'
Run Code Online (Sandbox Code Playgroud)

但如果我能使用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'
Run Code Online (Sandbox Code Playgroud)

同样的问题.在这种情况下我可以使用where子句吗?

syntax monads haskell

10
推荐指数
2
解决办法
2780
查看次数

标签 统计

haskell ×1

monads ×1

syntax ×1