Я пытаюсь реализовать функцию в Haskell, которая будет принимать произвольный список целых чисел xs
и целое число k
и возвращает набор списков с k
во всех возможных позициях.
Например, для xs = [0, 1]
и k = 2
у нас будет
myFunction [0, 1] 2 = [ [2, 0, 1], [0, 2, 1], [0, 1, 2] ]
Я реализовал это как
putOn xs x i = (take i xs) ++ (x:(drop i xs))
putOnAll xs x = map (putOn xs x) [0..(length xs)]
, но я чувствую, что должны быть другиеумные способы достичь того же.Мой код выглядит так, будто кто-то пытается убить ошибку с помощью ракеты.Может ли кто-нибудь сделать предположения о способах сделать что-то умное, чем этот кусок кода?
Спасибо