基本上,我想创建一个函数,它接受一个整数列表和另一个列表(此列表可以是任何类型),并生成另一个列表,其中包含其他列表中的元素“以整数列表指定的间隔。如果我输入:反复调用一个函数:Haskell
IXS [2,3,1] [3,2,1]
[2,1,3]
到目前为止,我有:
ix :: Int -> [a] -> a
ix a [] = error "Empty list"
ix 1 (x:xs) = x
ix a (x:xs) = ix (a-1) xs
ixs :: [Int] -> [a] -> [a]
ixs [] _ = []
ixs _ [] = []
ixs (x:xs) (y) = ix x y: []
有了这个代码我只得到一个返回值,如下所示:
IXS [1,2] [2,1]
[2]
如何在(x:xs)
上重复调用ix
函数,以便返回所需的所有值?
编辑:我想这样做,而不使用任何标准的前奏功能。我只想使用递归。
谢谢!这真的帮助了我。我从来没有想过使用地图和翻转这个功能。再次感谢! – user2548080