【发布时间】:2014-08-11 17:21:29
【问题描述】:
当我注意到Elm 不支持列表推导时,我正试图在 Elm 中模拟魔方。在 Haskell 甚至 Python 中,我会写如下内容:
ghci> [2*c | c <- [1,2,3,4]]
[2,4,6,8]
我在 Elm 中找不到方法。我必须写的实际列表理解是(在 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 -> b 将 Integer 变成 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 个元素是否有效?
【问题讨论】: