我试图教自己Haskell和我使用的书已经说过要创建一个列表,列出了所有可能的列表,例子如下(粗略翻译):
鉴于列表,ls = [1,2,3],有5种可能的形式:
[[1],[2],[3]]
[[1,2],[3]]
[[1,3],[2]]
[[2,3],[1]]
[[1,2,3]]
我怎么开始编码?
谢谢你,对不起英语,这不是我的第一语言。
答案 0 :(得分:2)
扩展Daniel Wagner的评论:
首先,准确解释你想要什么。我会这样说:
给定一个列表
xs :: [a]
,其元素都是不同的,生成一个列表yss :: [[[a]]]
,表示将xs
的元素划分为非空列表的所有方法。
现在,考虑一下案例:
ways :: [a] -> [[[a]]]
ways [] = ?
ways (ys : yss) = ?
您可以预期第二种情况是递归的。您还可能需要编写至少一个辅助函数。