init commit again
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
//[https://en.wikipedia.org/wiki/C3_linearization]:
|
||||
//class O
|
||||
//class A extends O
|
||||
//class B extends O
|
||||
//class C extends O
|
||||
//class D extends O
|
||||
//class E extends O
|
||||
//class K1 extends A, B, C
|
||||
//class K2 extends D, B, E
|
||||
//class K3 extends D, A
|
||||
//class Z extends K1, K2, K3
|
||||
|
||||
|
||||
general {
|
||||
funcon-term:
|
||||
initialise-giving initialise-generating initialise-binding finalise-failing
|
||||
scope(collateral(
|
||||
{"O" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"O",map()),
|
||||
map())}
|
||||
,
|
||||
{"A" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"A",map(),
|
||||
object(fresh-atom,"O",map())),
|
||||
map(), "O")}
|
||||
,
|
||||
{"B" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"B",map(),
|
||||
object(fresh-atom,"O",map())),
|
||||
map(), "O")}
|
||||
,
|
||||
{"C" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"C",map(),
|
||||
object(fresh-atom,"O",map())),
|
||||
map(), "O")}
|
||||
,
|
||||
{"D" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"D",map(),
|
||||
object(fresh-atom,"O",map())),
|
||||
map(), "O")}
|
||||
,
|
||||
{"E" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"E",map(),
|
||||
object(fresh-atom,"O",map())),
|
||||
map(), "O")}
|
||||
,
|
||||
{"K1" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"K1",map(),
|
||||
object(fresh-atom,"A",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"B",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"C",map(),object(fresh-atom,"O",map()))),
|
||||
map(), "A", "B", "C")}
|
||||
,
|
||||
{"K2" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"K2",map(),
|
||||
object(fresh-atom,"D",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"B",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"E",map(),object(fresh-atom,"O",map()))),
|
||||
map(), "D", "B", "E")}
|
||||
,
|
||||
{"K3" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"K3",map(),
|
||||
object(fresh-atom,"D",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"A",map(),object(fresh-atom,"O",map()))),
|
||||
map(), "D", "A")}
|
||||
,
|
||||
{"Z" |->
|
||||
class(
|
||||
thunk abstraction reference
|
||||
object(fresh-atom,"Z",map(),
|
||||
object(fresh-atom,"K1",map(),
|
||||
object(fresh-atom,"A",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"B",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"C",map(),object(fresh-atom,"O",map()))),
|
||||
object(fresh-atom,"K2",map(),
|
||||
object(fresh-atom,"D",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"B",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"E",map(),object(fresh-atom,"O",map()))),
|
||||
object(fresh-atom,"K3",map(),
|
||||
object(fresh-atom,"D",map(),object(fresh-atom,"O",map())),
|
||||
object(fresh-atom,"A",map(),object(fresh-atom,"O",map())))),
|
||||
map(), "K1", "K2", "K3")}
|
||||
),
|
||||
sequential(
|
||||
print class-name-tree "O",
|
||||
print class-name-tree "A",
|
||||
print class-name-tree "K1",
|
||||
print class-name-tree "Z"
|
||||
)
|
||||
)
|
||||
;
|
||||
}
|
||||
|
||||
tests {
|
||||
result-term: null-value;
|
||||
standard-out: [
|
||||
tree("O")
|
||||
,
|
||||
tree("A", tree("O"))
|
||||
,
|
||||
tree("K1", tree("A", tree("O")), tree("B", tree("O")), tree("C", tree("O")))
|
||||
,
|
||||
tree("Z",
|
||||
tree("K1", tree("A", tree("O")), tree("B", tree("O")), tree("C", tree("O")))
|
||||
,
|
||||
tree("K2", tree("D", tree("O")), tree("B", tree("O")), tree("E", tree("O")))
|
||||
,
|
||||
tree("K3", tree("D", tree("O")), tree("A", tree("O")))
|
||||
)
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user