2013-06-19 11 views
3

我已经在互联网上搜索了一段时间,解决了这个问题。我需要在Haskell中创建一个函数,它可以从输入字符串中生成所有可能的组合,而不会有重复。如何组合字符串中的字符一次?

例子:

combination "new" 

会给作为输出:

["new","nwe","enw","ewn","wne","wen"] 

有人可以帮我吗?

+5

在数学中,这些被称为“[置换](http://www.haskell.org/hoogle/?hoogle=permutations)”。 –

+0

感谢您的回应! – user2502169

回答

10

Data.List模块有一个permutations函数,它完全符合您的需求。

+0

谢谢!我是一个哈斯克尔的新手! – user2502169

7

Hoogle是你最好的朋友。第[a] -> [[a]]类型的快速搜索给出排列作为第二个结果。如果你正在寻找一个函数,那么试试hoogle一定会很好,因为haskell中的类型有很多关于函数的功能,而受限制的类型搜索很可能找到你正在寻找的功能。例如,上面的类型在hoogle的数据库中只有四个函数具有精确的类型匹配,并且在大多数情况下这些信息足以明确地推断函数的语义。

+0

非常感谢! – user2502169

相关问题