我是Haskell的新手,因此需要一些帮助,我想这对你们来说很容易。我正试图使一个功能,做相同的使用"!!"对于索引,但是索引应该从1到列表的长度。这就是我到目前为止所拥有的,帮助函数"numberList"以及主要功能"ele">
numberList :: [a] -> [(a, Int)]
numberList x = zip x [1..10]
ele :: Int -> [a] -> a
最终结果应该如下所示:
ele 2 [3,4,5,6] = 4
我已经尝试了一些不同的东西与模式匹配,但它似乎不工作。我该何去何从?
考虑下面两个例子:
ele 1 [1,2,3] = 1
ele 2 [3,4,5,6] = 4
在第一种情况下,因为数字是1
,所以返回列表的头部。简单。
ele :: Int -> [a] -> a
ele 1 (x:_) = x
我们需要把2
变成1
。很简单,减去1
。
但是您还需要将4
放到列表的头部。ele 1 [4, 5, 6]
将方便地给你你正在寻找的结果。这个递归可能看起来像下面这样,但是为了不给你做作业,我将让你填空。
ele :: Int -> [a] -> a
ele 1 (x:_) = x
ele n (x:xs) = ele (n-1) ??