2010-02-03 11 views
5

Buscando una función incorporada que hará lo siguiente:En Haskell, ¿hay una función incorporada que cree una lista de un elemento?

mklist x = [x] 

El beneficio es que lo puedo usar en una composición para crear una lista de un solo elemento. Entender que (replicar 1) está disponible, pero ¿hay una función más directa? Sería útil en situaciones como esta:

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

Respuesta

11

Monádica return:

return x 

O:

(:[]) x 

Es menos caracteres, pero más el uso tecla de mayúsculas, de modo podría ser más difícil tipo.

+0

Oh. Derecha. Duh. Gracias. – me2

+0

:-) Por supuesto, su ejemplo podría hacerse fácilmente con 'map', pero asumo que su escenario real es más complejo. –

+5

'pure' de Control.Applicative también funciona. ¡Son cuatro cartas no desplazadas! Sin embargo, al igual que con 'return' cualquier tipo de error puede ser más complicado. – yatima2975

Cuestiones relacionadas