Haskell:是否有一种惯用的方法将列表中的每个项目插入到自己的列表中?

时间:2013-07-05 18:48:17

标签: list haskell idioms

我一直在使用((:[]) <$> xs),但如果有更明确的方式我会喜欢使用它。

编辑:这么多好人答案!我认为我不能接受,因为他们都很好。

6 个答案:

答案 0 :(得分:12)

我相信map returnmap pure足够好了。

答案 1 :(得分:7)

也许这个?

map (\x -> [x]) xs

你可以使用我认为的任何仿函数,因此这对于仅仅列表来说会更加独特。

答案 2 :(得分:4)

split包提供了一个(Data.List.Split。)chunksOf函数,其名称为IMO,比各种地图解决方案更有意义(即使它们更具惯用性。)

答案 3 :(得分:4)

您还可以使用列表理解:

[ [x] | x <- theList]

对于这样一个简单的例子可能有点过分,但根据你的上下文,也许你可以将这个步骤与单例列表的进一步处理合并:

[f [x] + 13 | x <- theList]

答案 4 :(得分:2)

Tong-in-cheek版本:

import Data.List

groupBy (const . const False) xs

答案 5 :(得分:1)

使用do表示法:

do { x <- xs; return [x] }