Discussion:
MultiSort Species
Martin Rubey
2007-06-07 23:01:13 UTC
Permalink
I have worked a little on mspecies.as.nw. Multiset and MultiSubset now behave
well. Find an example below.

I mainly use the idea to represent a multisorted species as a

List Wrapped SomeSpecies

where Wrapped(S: SPECIES) is roughly Record(L: LabelType, l: S L). This works
quite well.

Ralf, is it ok for you if I check this in?


Martin

Example:

import from List Z, SetSpecies Z, Wrapped SetSpecies, List Wrapped SetSpecies;
s1: SetSpecies Z := set [1,2,3];
r1: Wrapped SetSpecies := object(Z, s1);
import from String, List String, SetSpecies String;
s2: SetSpecies String := set ["a", "b"];
r2: Wrapped SetSpecies := object(String, s2);
m : List Wrapped SetSpecies := [r1, r2];
L == MultiLabel(Integer, String);
import from Multiset(L);
k := multiset(m)$Multiset(L);
k2 := structures(k)$MultiSubset(L);
import from List MultiSubset L;
[k2]

yields

[String: Subset([], [a,b])AldorInteger: Subset([], [1,2,3]),
String: Subset([], [a,b])AldorInteger: Subset([1], [2,3]),
String: Subset([], [a,b])AldorInteger: Subset([2], [1,3]),
String: Subset([], [a,b])AldorInteger: Subset([1,2], [3]),
String: Subset([], [a,b])AldorInteger: Subset([3], [1,2]),
String: Subset([], [a,b])AldorInteger: Subset([1,3], [2]),
String: Subset([], [a,b])AldorInteger: Subset([2,3], [1]),
String: Subset([], [a,b])AldorInteger: Subset([1,2,3], []),
String: Subset([a], [b])AldorInteger: Subset([], [1,2,3]),
String: Subset([a], [b])AldorInteger: Subset([1], [2,3]),
String: Subset([a], [b])AldorInteger: Subset([2], [1,3]),
String: Subset([a], [b])AldorInteger: Subset([1,2], [3]),
String: Subset([a], [b])AldorInteger: Subset([3], [1,2]),
String: Subset([a], [b])AldorInteger: Subset([1,3], [2]),
String: Subset([a], [b])AldorInteger: Subset([2,3], [1]),
String: Subset([a], [b])AldorInteger: Subset([1,2,3], []),
String: Subset([b], [a])AldorInteger: Subset([], [1,2,3]),
String: Subset([b], [a])AldorInteger:Subset([1], [2,3]),
String: Subset([b], [a])AldorInteger: Subset([2],[1,3]),
String: Subset([b], [a])AldorInteger: Subset([1,2], [3]),
String:Subset([b], [a])AldorInteger: Subset([3], [1,2]),
String: Subset([b],[a])AldorInteger: Subset([1,3], [2]),
String: Subset([b], [a])AldorInteger:Subset([2,3], [1]),
String: Subset([b], [a])AldorInteger: Subset([1,2,3],[]),
String: Subset([a,b], [])AldorInteger: Subset([], [1,2,3]),
String:Subset([a,b], [])AldorInteger: Subset([1], [2,3]),
String: Subset([a,b],[])AldorInteger: Subset([2], [1,3]),
String: Subset([a,b], [])AldorInteger:Subset([1,2], [3]),
String: Subset([a,b], [])AldorInteger: Subset([3],[1,2]),
String: Subset([a,b], [])AldorInteger: Subset([1,3], [2]),
String:Subset([a,b], [])AldorInteger: Subset([2,3], [1]),
String: Subset([a,b],[])AldorInteger: Subset([1,2,3], [])] @
List(MultiSubset(L))

Hm, I just realised that it should be first the Integers, then the Strings...



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

Loading...