基本的に、整数のリストと別のリスト(このリストは任意のタイプにすることができます)を取得する関数を作成し、整数のリストで指定された間隔で「他のリスト」から要素を含む別のリストを生成します. 入力した場合:
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: []
このコードでは、次のように値が 1 つだけ返されます。
[1,2] [2,1]
[2]
ix
関数を繰り返し呼び出して、必要なすべての値を返すにはどうすればよい(x:xs)
ですか?
編集:標準のプレリュード関数を使用せずにこれを行いたいです。再帰を使いたいだけです。