gpt4 book ai didi

list - elm 列表推导,检索列表的第 n 个元素

转载 作者:行者123 更新时间:2023-12-04 23:21:24 25 4
gpt4 key购买 nike

当我注意到 Elm 时,我正试图在 Elm 中模拟魔方。不支持列表推导。在 Haskell 甚至 Python 中,我会写如下内容:

ghci> [2*c | c <- [1,2,3,4]]

[2,4,6,8]

我在榆树找不到路。我必须编写的实际列表理解是(在 Haskell 中):

ghci> let x = [0,1,3,2]
ghci> let y = [2,3,1,0]
ghci> [y !! fromIntegral c | c <- x]

[2,3,0,1]

在哪里 fromIntegral :: (Integral a, Num b) => a -> bInteger进入 Num .

在 Elm 中,我尝试使用数组:

x = Array.fromList [0,1,3,2]
y = Array.fromList [2,3,1,0]
Array.get (Array.get 2 x) y

我开始遇到 Maybe 的问题类型:
Expected Type: Maybe number
Actual Type: Int

事实上,我必须查一下它们是什么。我没有解决可能的问题,而是对列表做了一些事情:

x = [0,1,3,2]
y = [2,3,1,0]

f n = head ( drop n x)
map f y

我不知道这是否有效或正确,但它在我尝试的情况下有效。

我想我的两个主要问题是:
  • Elm 支持列表推导吗? (我猜只是使用 map )
  • 如何绕过 maybe数组示例中的类型?
  • 调用head ( drop n x) 有效率吗?获取列表的第 n 个元素?
  • 最佳答案

    Elm 不支持列表解析:https://github.com/elm-lang/Elm/issues/147

    埃文提到的风格指南说“更喜欢 map ,过滤器和折叠”,所以..使用`map:

    map ((y !!).fromIntegral) x

    或者
    map (\i-> y !! fromIntegral i) x

    评论者指出 (!!) 不是有效的 Elm(它是有效的 Haskell)。我们可以将其定义为:
    (!!) a n = head (drop n a) , 总函数。

    也许
    (!!) a n = case (head (drop n a)) of
    Just x -> x
    Nothing -> crash "(!!) index error"

    关于list - elm 列表推导,检索列表的第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248907/

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