Sha256: ea42da735b404bae97aa25248926003b2c553fd5621063b674051b4ef23058ab
Contents?: true
Size: 805 Bytes
Versions: 84
Compression:
Stored size: 805 Bytes
Contents
-module( parallel_letter_frequency ). -export( [dict/1] ). dict( Texts ) -> Pids = [letter_frequency(X) || X <- Texts], Dicts = [receive_dict(X) || X <- Pids], merge_dicts( Dicts ). letter_frequency( String ) -> My_pid = erlang:self(), erlang:spawn( fun() -> My_pid ! {erlang:self(), letter_freqency_dict(String)} end ). letter_freqency_dict( String ) -> lists:foldl( fun letter_freqency_dict/2, dict:new(), String ). letter_freqency_dict( Character, Dict ) -> dict:update_counter( Character, 1, Dict ). merge_dicts( [Dict | Dicts] ) -> lists:foldl( fun merge_dicts/2, Dict, Dicts ). merge_dicts( Dict, Acc ) -> dict:merge( fun merge_dicts/3, Dict, Acc ). merge_dicts( _Key, Value, Acc_value ) -> Value + Acc_value. receive_dict( Pid ) -> receive {Pid, Dict} -> Dict end.
Version data entries
84 entries across 84 versions & 1 rubygems