yanais/examples/mrwy57u/00.ynms
2023-10-15 01:10:05 +02:00

25 lines
525 B
Text

(* all arguments are unique/linear *)
Drop = #[lang = Drop] iface ^{
drop = Λ (_: ^This) → ();
} default .{
drop = λ (x: ^This) → {
std.typarts.foreach ^This.parts (λ (t: Type) → λ (v: t) → (Drop t).drop v);
()
};
};
Clone = #[lang = Clone] iface ^{
inherit Drop;
clone = Λ (self: &^This) → ^This;
} default .{
clone = λ (self: &^This) → {
std.typarts.map ^This.parts (λ (t: Type) → λ (x: t) → (Clone t).clone v);
()
};
};
main = λ {
std.println "Hello World!";
};