基本上,我想創建一個函數,它接受一個整數列表和另一個列表(此列表可以是任何類型),並生成另一個列表,其中包含其他列表中的元素「以整數列表指定的間隔。如果我輸入:反覆調用一個函數: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