Path: news.daimi.aau.dk!jlk From: jlk@daimi.aau.dk (Jorgen Lindskov Knudsen) Newsgroups: daimi.beta Subject: Re: containers/sets Date: 5 Feb 1998 07:57:13 GMT Organization: DAIMI, Computer Science Dept. at Aarhus University Lines: 64 Message-ID: <6bbrcp$knf$1@nf.aau.dk> References: <34D8EC4F.59898533@daimi.aau.dk> Reply-To: jlknudsen@daimi.aau.dk (Jorgen Lindskov Knudsen) NNTP-Posting-Host: fraxinus.daimi.aau.dk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Newsreader: NN version 6.5.1 (NOV) Xref: news.daimi.aau.dk daimi.beta:10314 In <34D8EC4F.59898533@daimi.aau.dk> Michael Thomsen writes: >Hej! >Burde følgende lille program: > ORIGIN '~beta/basiclib/v1.6/betaenv'; > INCLUDE '~beta/containers/v1.6/sets'; > -- program: Descriptor -- > (# aSet: @Set (# element:: text #) > do > aSet.init; > 'Abe'->aSet.insert; > 'Ko'->aSet.insert; > 'Gris'->aSet.insert; > 'Abe'->aSet.insert; > aSet.scan > (# do current[]->putline #) > #) >ikke udskrive: > Abe > Ko > Gris >og ikke: > Abe > Gris > Ko > Abe >hvor rækkefølgen selvfølgelig er underordnet. Spørgsmålet er altså: >Hvorfor kommer Abe to gange -- det er jo ikke et multiset. Default semantikken af Set er, at der ikke må være _identiske_ objekter i mængden. 'Abe' giver anledning til generering at et nyt text-objekt, hvorfor de to gange 'Abe' giver anledning til, at to _forskellige_ objekter bliver indsat i mængden (dvs. to objekter med forskellige OID, men samme 'state'). For at realisere den semantik du ønsker, skal du blot specificere, hvad du mener med 'identitet'. Dette gør du ved: aSet: @Set (# element:: text; equal:: (# do left[]->right.equalNCS->value #) #) I dette tilfælde er to elementer identiske, hvis deres textuelle værdier er identiske (ikke-case sensitibel sammenligning). Hvis case betyder noget, så fjern NCS. --- jlk -- * Jorgen Lindskov Knudsen | Phone: +45 8942 3233 Fax: +45 8942 3255 * * Dept. of Computer Science | GSM: +45 2099 7357 * * Univ. of Aarhus, Building 540 | E-mail: jlknudsen@daimi.aau.dk * * Ny Munkegade, DK-8000 Aarhus C | WWW: http://www.daimi.aau.dk/~jlk *