Finishing up part 1.
This commit is contained in:
		
							parent
							
								
									2796f1b209
								
							
						
					
					
						commit
						d88b7f8bcf
					
				| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					-module(a).
 | 
				
			||||||
 | 
					-compile(export_all).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start(Tag) ->
 | 
				
			||||||
 | 
					    spawn(fun () -> loop(Tag) end).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loop(Tag) ->
 | 
				
			||||||
 | 
					    sleep(),
 | 
				
			||||||
 | 
					    Val = b:x(),
 | 
				
			||||||
 | 
					    io:format("Vsn1 (~p) b:x() = ~p~n", [Tag, Val]).
 | 
				
			||||||
 | 
					    loop(Tag).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sleep() ->
 | 
				
			||||||
 | 
					    receive
 | 
				
			||||||
 | 
						after 3000 -> true
 | 
				
			||||||
 | 
					    end.
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					-module(chapter8).
 | 
				
			||||||
 | 
					-export([unique_funs/0]).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%% The command code:all_loaded() returns a list of {Mod,File} pairs of
 | 
				
			||||||
 | 
					%% all modules that have been loaded into the Erlang system. Use the
 | 
				
			||||||
 | 
					%% BIF Mod:module_info() to find out about these modules. Write
 | 
				
			||||||
 | 
					%% functions to determine which module exports the most functions and
 | 
				
			||||||
 | 
					%% which function name is the most common. Write a function to find
 | 
				
			||||||
 | 
					%% all unambiguous function names, that is, function names that are
 | 
				
			||||||
 | 
					%% used in only one module.
 | 
				
			||||||
 | 
					unique_funs() ->
 | 
				
			||||||
 | 
					    unique_funs(code:all_loaded(), sets:new()).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unique_funs([], UniqueFuns) ->
 | 
				
			||||||
 | 
					    {sets:size(UniqueFuns), sets:to_list(UniqueFuns)};
 | 
				
			||||||
 | 
					unique_funs([{Mod, _File}|T], UniqueFuns) ->
 | 
				
			||||||
 | 
					    Funs = lists:map(fun ({Fun, _Arity}) -> Fun end, Mod:module_info(exports)),
 | 
				
			||||||
 | 
					    unique_funs(T, sets:union(UniqueFuns, sets:from_list(Funs))).
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
		Loading…
	
		Reference in New Issue