CLU példaprogramok

 
Halmaz típus az elem-típussal paraméterezve

A példa a generikus halmazra ad példát, valamint megmutat egy általános copy-similar kapcsolatot. A paraméter típus megszorított. Van benne egy lista-iterátor is...
[cluster; where; array; rep; cvt; up; down; iter; type-parameter] (CLU forrás)



set=cluster [t:type] is create, insert, delete, is_in, size, elements,
                        equal, similar
    where t has equal:proctype (t,t) returns (bool)

  rep=array[t]

  create=proc() returns (cvt)
    return (rep$new())
  end create

  insert=proc(s:cvt,i:t)
    if ~is_in(up(s),i) then rep$addh(s,i) end
  end insert

  delete=proc(s:cvt,i:t)
    for j:int in rep$indexes(s) do
      if i=s[j] then
        s[j]:=rep$top(s)
        rep$remh(s)
        return
      end
    end
  end delete

  is_in=proc(s:cvt,i:t) returns (bool)
    for j:t in rep$elements(s) do
      if i=j then return (true) end
    end
  end is_in

  size=proc(s:cvt) returns (int)
    return (rep$size(s))
  end size

  elements=iter(s:cvt) yields (t)
    for i:t in rep$elements(s) do yield(i) end
  end elements

  equal=proc(s1,s2:cvt) returns (bool)
    return (s1=s2)
  end equal

  similar=proc(s1,s2:set[t]) returns (bool)
    if size(s1)~=size(s2) then return(false) end
      for i:t in elements(s1) do
        if ~is_in(s2,i) then return (false) end
      end
    return (true)
  end similar

end set