58 lines
1.2 KiB
Plaintext
58 lines
1.2 KiB
Plaintext
( (27.Jonah)
|
|
(18.Alan)
|
|
(28.Glory)
|
|
(18.Popeye)
|
|
(28.Alan)
|
|
: ?table-A
|
|
& (Jonah.Whales)
|
|
(Jonah.Spiders)
|
|
(Alan.Ghosts)
|
|
(Alan.Zombies)
|
|
(Glory.Buffy)
|
|
: ?table-B
|
|
& new$hash:?H
|
|
& !table-A:? [?lenA
|
|
& !table-B:? [?lenB
|
|
& ( join
|
|
= smalltab bigtab smallschema bigschema joinschema
|
|
, key val val2 keyval2
|
|
. !arg
|
|
: (?smalltab.?bigtab.(=?smallschema.?bigschema.?joinschema))
|
|
& :?rel
|
|
& !(
|
|
' ( whl
|
|
' ( !smalltab:$smallschema ?smalltab
|
|
& (H..insert)$(!key.!val)
|
|
)
|
|
& whl
|
|
' ( !bigtab:$bigschema ?bigtab
|
|
& ( (H..find)$!key:?keyval2
|
|
& whl
|
|
' ( !keyval2:(?key.?val2) ?keyval2
|
|
& $joinschema !rel:?rel
|
|
)
|
|
|
|
|
)
|
|
)
|
|
)
|
|
)
|
|
& !rel
|
|
)
|
|
& out
|
|
$ ( join
|
|
$ ( !lenA:~<!lenB
|
|
& ( !table-B
|
|
. !table-A
|
|
. (
|
|
= (?key.?val).(?val.?key).!val.!key.!val2
|
|
)
|
|
)
|
|
| ( !table-A
|
|
. !table-B
|
|
. (=(?val.?key).(?key.?val).!val2.!key.!val)
|
|
)
|
|
)
|
|
)
|
|
&
|
|
);
|