小编ICF*_*FSZ的帖子

需要解释基本的 do 块语法

在ghci中,我写道:

 let x = do
    i <- [1..5]
    j <- [2..4]
    return i 
Run Code Online (Sandbox Code Playgroud)

预期结果:

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

实际结果:

[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]
Run Code Online (Sandbox Code Playgroud)

我不明白该输出背后的逻辑。我认为原因可能与 monad 有关,但我对函数式编程很陌生,我希望有人能解释一下。

我也试过 List-comprehension 中的等价形式,结果是一样的,这意味着我在这里误解了一些基本的东西。

monads haskell list-comprehension list do-notation

3
推荐指数
2
解决办法
114
查看次数

标签 统计

do-notation ×1

haskell ×1

list ×1

list-comprehension ×1

monads ×1