SCM Repository
View of /sml/trunk/src/MLRISC/util/sortedlist.sml
Parent Directory
|
Revision Log
Revision 114 -
(download)
(annotate)
Fri Jun 5 19:41:21 1998 UTC (22 years, 7 months ago) by monnier
File size: 1366 byte(s)
Fri Jun 5 19:41:21 1998 UTC (22 years, 7 months ago) by monnier
File size: 1366 byte(s)
This commit was generated by cvs2svn to compensate for changes in r113, which included commits to RCS files with non-trunk default branches.
(* Copyright 1989 by AT&T Bell Laboratories *) structure SortedList = struct fun enter(new:int,l) = let fun f [] = [new] | f (l as h::t) = if new<h then new::l else if new>h then h::f t else l in f l end fun uniq l = let fun loop([],acc) = acc | loop(a::r,acc) = loop(r,enter(a,acc)) in loop(l,[]) end fun merge(a,[]) = a | merge([],a) = a | merge(l as (i:int)::a, m as j::b) = if j<i then j::merge(l,b) else i::merge(a,if i<j then m else b) local fun loop (a::b::rest) = loop(merge(a,b)::loop rest) | loop l = l in fun foldmerge l = hd(loop l) handle Hd => [] end fun remove(x as (xl:int)::xr, y as yl::yr) = if xl>yl then yl::remove(x,yr) else remove(xr,if xl<yl then y else yr) | remove(_,y) = y fun rmv (x : int,l) = let fun loop nil = nil | loop (a::b) = if x=a then b else a::loop b in loop l end fun member l (e:int) = let fun f [] = false | f (h::t) = if h<e then f t else e=h in f l end fun intersect(nil,_) = nil | intersect(_,nil) = nil | intersect(l as (a:int)::b,r as c::d) = if a=c then a::intersect(b,d) else if a<c then intersect(b,r) else intersect(l,d) fun difference(nil,_) = nil | difference(l,nil) = l | difference(l as (a:int)::b,r as c::d) = if a=c then difference(b,d) else if a<c then a::difference(b,r) else difference(l,d) end (* * $Log$ *)
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |