2011-01-18 29 views
6

Además de tener la función de mapa disponible con muchas aries (hasta 4), Prolog le permite (bajo ciertas circunstancias) asignar una función múltiple en una sola lista. Digamos que quiere probar si 'x' es miembro de múltiples listas. Puede hacer:función de mapa en Erlang

maplist(member(x),[[a,b,c,x],[3,f,s,x]]). 

Se incluye el primer argumento de miembro, y todo se asigna a la lista.

Pregunta 1: ¿Hay algo similar disponible para Erlang? No puedo encontrarlo en la documentación, pero tampoco puedo encontrarlo en ninguna documentación de Prolog.

Pregunta 2: ¿Cómo usar el mapa (y funciones similares) con varias aries? Hazlo tu mismo?

Gracias.

Respuesta

3

Tal vez algo como:

23> lists:map(fun(L) -> lists:member(42,L) end, [[1,5,8,4],[13,42],[7,2,10]]). 
[false,true,false] 
24> 
+0

Ah, muy bueno. Gracias. – Ultranewb

+0

@Ultranewb: De nada ;-) –

3

Hay lists:map/2 y también listas por comprensión:

1> lists:map(fun(L) -> lists:member(42,L) end, [[1,5,8,4],[13,42],[7,2,10]]). 
[false,true,false] 
2> [ lists:member(42,L) || L <- [[1,5,8,4],[13,42],[7,2,10]] ]. 
[false,true,false]