Как я могу получить условные перестановки в Haskell?Получить перестановки с определенным первым элементом
Это мой код:
perm :: [Int] -> [[Int]]
perm [] = [[]]
perm xs = [ x:ps | x <- xs , ps <- perm (xs\\[x]) ]
Но я хочу, чтобы получить все перестановки, которые начинаются с 1. Когда я выполняю:
perm [1,2,3]
Я хочу, чтобы получить только это:
[[1,2,3],[1,3,2]]
Я хочу поставить какое-то условие в функцию «perm», что позволяет мне это делать, пока он делает перестановки, я не хотите сделать фильтр, потому что я не хочу вычислять все перестановки.