[erlang-questions] 2 questions: Guards & Variables

Nils Müllner <>
Wed Nov 15 13:32:15 CET 2006


hi,
i currently implement depth first search tree for distributed 
fault-tolerance measurement. the enclosed module is just one part.

to run the attached file
   1. enter sample matrix:
       Matrix = [{a,0.1,pid,[{b,0.1},{c,0.1},{d,0.1}], cur, 
stab},{b,0.1,pid,[{e,0.1},{f,0.1}], cur, stab},{c,0.1,pid,[{g,0.1}], 
cur, stab},{d,0.1,pid,[{h,0.1},{i,0.1}], cur,    stab},{e,0.1,pid,[], 
cur, stab},{f,0.1,pid,[], cur, stab},{g,0.1,pid,[], cur, 
stab},{h,0.1,pid,[], cur, stab},{i,0.1,pid,[], cur, stab}].
   2 compile
       c(dfs_init_matrix).
   3. run
       dfs_init_matrix:dfs_init_matrix(Matrix).

questions:
1. in line 81 (in function rip_neighbours the line Bool = 
lists:member(First, Raw_Neighbours),) i have to assign the desired value 
to variable Bool. if i used it directly in the if     following clause i 
get a guard error. why do i have to use this work-araound and why is it 
not possible to directly use
       if
           lists:member(First, Raw_Neighbours) ->
                  ...
   as guard?
2. in the end, everything is correctly assigned into variable 
Return_Value in line 50. but when i return this value, everything gets 
corrupted... why?

further information:
*the tree built can be seen in http://www.mue-tech.com/DFS.png
*the desired result is written to variable Return_Value and printed 
before crash
*the matrix has the following structure
   [{Node_Name,Node_Fault_Possibility,Node_PID,[{Neighbours_Name, 
Link_Fault_Possibility}, 
more_neighbours],Current_Value,Stable_Value},more_nodes]
*the function gets a matrix where all current values are arbitrary. to 
run the simulator (super module), this module has to assign the stable 
path (Stable_Value) for each node and finally add the list, in which the 
nodes will be visited by dfs-algorithm (compare: 
http://en.wikipedia.org/wiki/Depth-first_search )

thanks in advance for any help...

kind regards
nils müllner
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dfs_init_matrix.erl
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20061115/7057964c/attachment.ksh>


More information about the erlang-questions mailing list