我之前试图解决这个问题,并且我已经搜索了一个解决方案,却找不到一个.
我需要一个函数,它接受一个列表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]]
Run Code Online (Sandbox Code Playgroud)
我试过这个:
list _ 0 = []
list xs n = do
y <- xs
ps <- list xs (n-1)
return y : ps
Run Code Online (Sandbox Code Playgroud)
还有这个:
list _ 0 = []
list xs n = do
y <- xs
y : list xs (n-1)
Run Code Online (Sandbox Code Playgroud)
没有按预期工作.我想知道两件事:为什么这些不起作用?我该如何修改它们才能起作用?
你非常接近!你的问题是你的基本情况list _ 0 = [].
你所说的是没有长度为0的列表,其中包含来自xs的元素,实际上只有一个是空列表.
尝试
list _ 0 = [[]]
list xs n = do
y <- xs
ps <- list xs (n-1)
return $ y : ps
Run Code Online (Sandbox Code Playgroud)