Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/branches/SMLNJ/src/smlnj-lib/Util/uref.sml
ViewVC logotype

Diff of /sml/branches/SMLNJ/src/smlnj-lib/Util/uref.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3, Sat Oct 4 23:33:46 1997 UTC revision 475, Wed Nov 10 22:59:58 1999 UTC
# Line 38  Line 38 
38            val p' = find p            val p' = find p
39            val q' = find q            val q' = find q
40            in            in
41              if (p' = q') then () else p' := PTR q              if (p' = q') then false else (p' := PTR q; true)
42            end            end
43    
44      fun unify f (p, q) = let      fun unify f (p, q) = let
# Line 47  Line 47 
47            val newC = f (pc, qc)            val newC = f (pc, qc)
48            in            in
49              if p' = q'              if p' = q'
50                then p' := ECR(newC, pr)                then (p' := ECR(newC, pr); false)
51              else if pr = qr                else (
52                    if pr = qr
53                then (                then (
54                  q' := ECR(newC, qr+1);                  q' := ECR(newC, qr+1);
55                  p' := PTR q')                  p' := PTR q')
# Line 58  Line 59 
59                  p' := PTR q')                  p' := PTR q')
60                else ((* pr > qr *)                else ((* pr > qr *)
61                  p' := ECR(newC, pr);                  p' := ECR(newC, pr);
62                  q':= PTR p')                      q':= PTR p');
63                    true)
64            end            end
65    
66      fun union (p, q) = let      fun union (p, q) = let
# Line 66  Line 68 
68            val q' = find q            val q' = find q
69            in            in
70              if p' = q'              if p' = q'
71                then ()                then false
72                else let                else let
73                  val ECR(pc, pr) = !p' and ECR(qc, qr) = !q'                  val ECR(pc, pr) = !p' and ECR(qc, qr) = !q'
74                  in                  in
# Line 76  Line 78 
78                        p' := PTR q')                        p' := PTR q')
79                    else if pr < qr                    else if pr < qr
80                      then p' := PTR q'                      then p' := PTR q'
81                      else q':= PTR p'                      else q':= PTR p';
82                      true
83                  end                  end
84            end            end
85    

Legend:
Removed from v.3  
changed lines
  Added in v.475

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0