2011-01-18 5 views
6

Oltre ad avere la funzione mappa disponibile con molte funzioni (fino a 4), Prolog consente (in determinate circostanze) di mappare una funzione multipla in una singola lista. Supponi di voler verificare se 'x' è un membro di più elenchi. Puoi fare:map function in Erlang

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

Il primo argomento del membro è incluso e l'intera cosa è mappata sulla lista.

Domanda 1: È qualcosa di simile disponibile per Erlang? Non riesco a trovarlo nella documentazione, ma di nuovo non riesco a trovarlo in nessuna documentazione Prolog.

Domanda 2: Come utilizzare la mappa (e funzioni simili) con più funzioni? Roll your own?

Grazie.

risposta

3

Forse qualcosa di simile:

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, molto buono. Grazie. – Ultranewb

+0

@Ultranewb: Prego ;-) –

3

ci sono lists:map/2 e anche list comprehension:

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]