之前我曾试图解决这个问题,并且我一直在搜索解决方案而且找不到解决方案。
我需要一个带有列表xs和整数n的函数,并返回长度为n的所有列表,其中包含xs中的元素。例如:
function [0,1] 3 = [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]
我试过这个:
list _ 0 = []
list xs n = do
y <- xs
ps <- list xs (n-1)
return y : ps
和此:
list _ 0 = []
list xs n = do
y <- xs
y : list xs (n-1)
没有按预期工作。我想知道两件事: 为什么这些不起作用? 我该如何修改它们才能起作用?
答案 0 :(得分:8)
你非常接近!您的问题是您的基本案例list _ 0 = []
。
你所说的是没有长度为0的列表,其中包含xs中的元素,实际上只有一个是空列表。
尝试
list _ 0 = [[]]
list xs n = do
y <- xs
ps <- list xs (n-1)
return $ y : ps