2011-01-18 8 views
6

Oprócz funkcji mapy z wieloma ariami (do 4), Prolog pozwala (w pewnych okolicznościach) mapować funkcję wielu obiektów arytycznych na jedną listę. Powiedzmy, że chcesz sprawdzić, czy "x" jest członkiem wielu list. Możesz zrobić:funkcja mapowa w Erlang

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

Pierwszy argument członka jest zawarty, a cała sprawa jest zamapowana na listę.

Pytanie 1: Czy coś podobnego jest dostępne dla Erlanga? Nie mogę go znaleźć w dokumentacji, ale znowu nie mogę go znaleźć w żadnej dokumentacji Prolog.

Pytanie 2: Jak korzystać z mapy (i podobnych funkcji) z wieloma ariami? Skręć swój własny?

Dzięki.

Odpowiedz

3

Może coś takiego:

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

Ach, bardzo dobre. Dzięki. – Ultranewb

+0

@Ultranewb: Nie ma za co ;-) –

3

Istnieje lists:map/2 a także listowych:

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]