-module(mapfun). -export([map/2,compute/3]). collectRes([]) -> []; collectRes([ID|IDs]) -> receive {ID,Res} -> [Res|collectRes(IDs)] end. map(_,[]) -> []; map(F,List) -> ComputingActors = [spawn(mapfun,compute,[F,X,self()]) || X <- List ], %Just for readability. We can directily put the list as argument of collectRes collectRes(ComputingActors). compute(F,X,Collector) -> Res = F(X), Collector!{self(),Res}. %% esempio di applicazione: %% c(mapfun). %% Pippo = fun(X) -> (X*6) end. %% mapfun:map(Pippo,[1,2,3,4]. %% [6,12,18,24]