我的任务是在Haskell中实现一个函数allCombinations
,该函数将给定列表的所有可能组合作为无限列表返回。
由于我找不到一个解决方案,其中不包括进口,我会再问一次。我是新的Haskell和我的任务是创建一个函数allCombinations :: [a] -> [[a]]
,它创建了一个无限的可能的组合列表。例如:take 10 (allCombinations [True,False])
,作为回报,我应该得到[[],[True],[False],[True,True],[False,True],[True,False],[False,False],[True,True,True],[False,True,True],[True,False,True]]
。我已经找到了一些解决方案,但所有这些都包括导入,我需要解决这个没有任何导入。
1条答案
按热度按时间mklgxw1f1#
你可以在这里使用递归。这从空列表开始,然后递归到你在前面加上给定列表和列表中的项的地方,所以: