✨ update test/datalog.nas
This commit is contained in:
parent
a801669888
commit
a0e6047296
|
@ -41,6 +41,7 @@ std::ostream& help(std::ostream& out) {
|
|||
<< "option:\n"
|
||||
<< " -h, --help | get help.\n"
|
||||
<< " -v, --version | get version.\n"
|
||||
<< " -r, --repl | use repl interpreter(experimental).\n"
|
||||
<< "\nnasal [option] <file> [argv]\n"
|
||||
<< "option:\n"
|
||||
<< " -a, --ast | view ast after link/optimize process.\n"
|
||||
|
@ -54,7 +55,6 @@ std::ostream& help(std::ostream& out) {
|
|||
<< " --prof | show profiling result, available under debug mode.\n"
|
||||
<< " --prof-all | show profiling result of all files,"
|
||||
<< "available under debug mode.\n"
|
||||
<< " -r, --repl | use repl interpreter(experimental).\n"
|
||||
<< "file:\n"
|
||||
<< " <filename> | execute file.\n"
|
||||
<< "argv:\n"
|
||||
|
|
|
@ -49,7 +49,7 @@ var count=func(s,c){
|
|||
}
|
||||
|
||||
var column=func(number){
|
||||
number=number>=1000?substr(str(number/1000),0,3)~'k':str(number);
|
||||
number=number>=1000?substr(str(number/1000),0,4)~'k':str(number);
|
||||
return padding.leftpad(number,6);
|
||||
}
|
||||
|
||||
|
|
|
@ -159,4 +159,46 @@ for(var i=10;i<1e6;i*=10) {
|
|||
println("cartesian");
|
||||
for(var i=100;i<600;i+=100) {
|
||||
cartesian(i);
|
||||
}
|
||||
|
||||
var person_data = [];
|
||||
var person = func(name, age) {
|
||||
append(person_data, [name, age]);
|
||||
return person_data;
|
||||
}
|
||||
|
||||
var know_data = [];
|
||||
var know = func(name_a, name_b) {
|
||||
append(know_data, [name_a, name_b]);
|
||||
}
|
||||
|
||||
person("a", 1);
|
||||
person("b", 2);
|
||||
person("c", 3);
|
||||
person("d", 4);
|
||||
|
||||
know("a", "b");
|
||||
know("b", "c");
|
||||
know("c", "d");
|
||||
know("d", "a");
|
||||
|
||||
# maybe_know(a, b) :- know(a, tmp), know(tmp, b).
|
||||
var maybe_know_data = [];
|
||||
|
||||
var temp = [];
|
||||
|
||||
foreach(var i; know_data) {
|
||||
foreach(var j; know_data) {
|
||||
append(temp, [i[0], i[1], j[0], j[1]]);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var i; temp) {
|
||||
if (!cmp(i[1], i[2])) {
|
||||
append(maybe_know_data, [i, i[0], i[3]]);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var res; maybe_know_data) {
|
||||
println(res[0], " -> ", res[1], " ", res[2]);
|
||||
}
|
Loading…
Reference in New Issue