【发布时间】:2013-07-06 11:07:17
【问题描述】:
基本上,我想创建一个函数,它接受一个整数列表和另一个列表(这个列表可以是任何类型),并以指定的间隔从“其他列表”中生成另一个列表,其中包含元素整数列表。如果我输入:
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 函数,以便它返回我想要的所有值?
编辑:我想在不使用任何标准前奏函数的情况下执行此操作。我只想使用递归。
【问题讨论】: