2010-02-03 9 views
5

Szukasz wbudowanej funkcji, która będzie wykonać następujące czynności:W Haskell, czy istnieje wbudowana funkcja, która tworzy listę jednego elementu?

mklist x = [x] 

Korzyścią jest to, że można go używać w kompozycji, aby utworzyć listę jednego elementu. Zrozum, że (replikacja 1) jest dostępna, ale czy istnieje bardziej bezpośrednia funkcja? Byłaby przydatna w sytuacjach tak:

["Alice", "Bob", "Charlie"] >>= mklist . ("Hello " ++) 

Odpowiedz

11

monadycznego return:

return x 

Lub:

(:[]) x 

To mniej znaków, ale bardziej użycie klawisza Shift, więc może być trudniejsze rodzaj.

+0

Och. Dobrze. Duh. Dzięki. – me2

+0

:-) Oczywiście twój przykład może równie dobrze zostać wykonany przy użyciu 'map', ale zakładam, że twój prawdziwy scenariusz jest bardziej złożony. –

+5

'czysty' od Control.Applicative również działa. To cztery niezmienione litery! Podobnie jak w przypadku 'return', wszelkie błędy typu mogą być bardziej skomplikowane. – yatima2975