在Haskell中执行循环

sy5wg1nm  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(125)

在Haskell中,当你在列表的do循环中使用〈-时,它会返回整个列表吗?
因此:

do
      //some code
         c <-[1..4]
        //some code

c会是[1,2,3,4]吗?

v8wbuo2f

v8wbuo2f1#

既然可以请翻译,为什么还要问我们?

$ ghci
GHCi, version 8.10.7: https://www.haskell.org/ghc/  :? for help
Loaded package environment from /home/tommd/.ghc/x86_64-linux-8.10.7/environments/default
iPrelude> import Debug.Trace
Prelude Debug.Trace> :{
Prelude Debug.Trace| do
Prelude Debug.Trace| c <- [1..4]
Prelude Debug.Trace| trace ("C is currently: " ++ show c) (return c)
Prelude Debug.Trace| :}
C is currently: 1
[1C is currently: 2
,2C is currently: 3
,3C is currently: 4
,4]

请注意,输出与跟踪消息交错,因此您可以看到c在monad列表中每次取一个14的值。
如果最后一部分“单子中”不是很明显,那么不要忽略它--这是理解这个答案的关键部分,也是如何将它应用到你使用Haskell语言中的关键部分。

相关问题