Haskell 获取具有特定第一个元素的排列

Haskell 获取具有特定第一个元素的排列,haskell,permutation,Haskell,Permutation,如何在Haskell中获得条件置换 这是我的代码: perm :: [Int] -> [[Int]] perm [] = [[]] perm xs = [ x:ps | x <- xs , ps <- perm ( xs\\[x] ) ] 我只想得到这个: [[1,2,3],[1,3,2]] 我想在函数“perm”中加入一些条件,允许我在进行排列时这样做,我不想做过滤器,因为我不想计算所有的排列。以1开头的[1,2,3]的排列只是[2,3]的排列前面添加了1,您可以使用 m

如何在Haskell中获得条件置换

这是我的代码:

perm :: [Int] -> [[Int]]
perm [] = [[]]
perm xs = [ x:ps | x <- xs , ps <- perm ( xs\\[x] ) ]
我只想得到这个:

[[1,2,3],[1,3,2]]

我想在函数“perm”中加入一些条件,允许我在进行排列时这样做,我不想做过滤器,因为我不想计算所有的排列。

1
开头的
[1,2,3]
的排列只是
[2,3]的排列
前面添加了
1
,您可以使用

map (1:) . perm $ [2, 3]
map (1:) . perm $ [2, 3]