gpt4 book ai didi

list - 为什么在获取列表中的所有其他元素时会得到额外的元素?

转载 作者:行者123 更新时间:2023-12-03 20:23:09 25 4
gpt4 key购买 nike

我是 haskell 的新手,我不知道为什么我会在列表中得到一个额外的元素。

这是我的代码:

module Test where

deal list = hand1
where list' = fst(splitAt 4 list)
hand1 = [snd list' | list'<- (zip [0..] list), even (fst list')]

如果我要输入:

Test.deal [1,2,3,4,5,6]

它将要创建的列表拆分为一个包含两个列表的元组,其中一个列表的长度为 4:([1,2,3,4],[5,6])

当我尝试获取元组中第一个列表的所有其他元素时,我得到:[1,3,5] 而不是 [1,3]

有人知道为什么它添加了 5,即使它不在列表中也是如此?

最佳答案

您正在定义两个不同的 list' .列表理解里面的那个list'<- (zip [0..] list)遮蔽了前一个。阴影意味着您在范围内有两个相同的名称,但词法上更接近的名称是唯一可见的。你想要这样的东西:

module Test where
deal list = hand1
where list0 = fst (splitAt 4 list)
hand1 = [snd list1 | list1 <- (zip [0..] list0), even (fst list1)]

有了这些改变,我可以做到

λ> deal [1,2,3,4,5,6]
[1,3]

关于list - 为什么在获取列表中的所有其他元素时会得到额外的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66881218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com