2013-07-05 19 views

Odpowiedz

7

Może to?

map (\x -> [x]) xs 

Pozdrawiam, że mogę pracować nad dowolnym funktorem, więc myślę, że byłoby to bardziej idomatyczne dla list.

12

wierzę map return lub map pure są wystarczająco dobre.

+4

będę argumentować, że '([])' jest wyraźniejszy niż powrotu i mniej znaków – jozefg

+2

@jozefg 'pure' jest jeszcze krótszy. – is7s

+0

Prawda, ale wymaga i importu – jozefg

4

Pakiet Podział zapewnia funkcję (Data.List.Split.) ChunksOf którego nazwa jest, IMO, bardziej znaczące niż różnych rozwiązań map (nawet jeśli są one bardziej idiomatyczne.)

4

Można również użyć listowego:

[ [x] | x <- theList] 

może przesadą taki prosty przykład, ale w zależności od kontekstu, może można połączyć tę czynność z jakiegoś dalszego przetwarzania list pojedynczych:

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

Korzystanie do notacji:

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

wersja Tongue-in-cheek:

import Data.List 

groupBy (const . const False) xs 
Powiązane problemy