在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 中的等价形式,结果是一样的,这意味着我在这里误解了一些基本的东西。