我在将列表转换为酉子列表时遇到问题
sublists :: [a] -> [[a]]
sublists [] = [[]]
sublists (x:xs) = [x:ys | ys <- sub] ++ sub
where sub = sublists xs
我需要一个函数子列表[真,假]退货[[True],[False]]而不是[[True,False],[True],[Frase],[]]但我就是不知道怎么打,也不想打我电脑的脸。
我希望我是清白的。谢谢
所以您想要一个将a
转换为[a]
的函数。可以
makeList = x -> [x]
(为什么我把它写成lambda?继续阅读(
因此,您需要一个在列表中将a
转换为[a]
的函数。可以
makeListsInList = map (x -> [x])
完成。
您可以使用函数pure :: Applicative f => a -> f a
将值包装到列表中,因为[]
的Applicative
实例将元素包装到单例列表中。
因此,您可以将您的功能定义为:
sublists :: [a] -> [[a]]
sublists = map pure
例如:
Prelude> sublists [True, False, False, True]
[[True],[False],[False],[True]]