Haskell列表到酉子列表



我在将列表转换为酉子列表时遇到问题

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]]

相关内容

  • 没有找到相关文章

最新更新