-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
enhancementNew feature or requestNew feature or request
Description
The for { T => ; } statement can be used in an adt[T] as well.
From qrstuv on #inferno:
implement Dongmap;
include "sys.m";
sys: Sys;
include "draw.m";
Dongmap: module {
init: fn(nil: ref Draw->Context, nil: list of string);
};
Map: adt[K, V]
for { K => hash: fn(nil: self K): int; } { # ← This right here
v: V;
add: fn(nil: self ref Map[K, V], key: K, val: V);
find: fn(nil: self ref Map[K, V], key: K): V;
};
Wang: adt {
hash: fn(nil: self ref Wang): int;
};
WingDingDingaling: adt {
sz: int;
};
Map[K, V].add(m: self ref Map[K, V], key: K, val: V)
{
m.v = val;
}
Map[K, V].find(m: self ref Map[K, V], key: K): V
{
return m.v;
}
Wang.hash(nil: self ref Wang): int
{
return 69105;
}
init(nil: ref Draw->Context, nil: list of string)
{
sys = load Sys Sys->PATH;
m := ref Map[ref Wang, ref WingDingDingaling](ref WingDingDingaling(2));
m.add(ref Wang, ref WingDingDingaling(10));
sys->print("%d\n", m.find(ref Wang).sz);
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request