当前位置 : 主页 > 网络推广 > seo >

elm list comprehensions,检索列表的第n个元素

来源:互联网 收集:自由互联 发布时间:2021-06-16
当我注意到 Elm不支持列表理解时,我试图在Elm中模拟魔方.在Haskell甚至是Python中,我会写一些类似于: ghci [2*c | c - [1,2,3,4]][2,4,6,8] 我在榆树找不到路.我必须写的实际列表理解是(在Haskell中
当我注意到 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 ::(积分a,Num b)=> a – > b将整数转换为Num.

在Elm中,我尝试使用Arrays:

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

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

我想我的两个主要问题是:

>榆树是否支持列表理解? (我想只是用地图)
>如何绕过Array示例中的类型?
>调用head(drop n x)来获取列表的第n个元素是否有效?

榆树不会也不会支持列表推导: https://github.com/elm-lang/Elm/issues/147

风格指南Evan所说的“喜欢地图,过滤和折叠”,所以..使用`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        只是x – > X        没什么 – >崩溃“(!!)索引错误”

网友评论