Biorąc pod uwagę dwie listy zmiennych, jaki jest najbardziej kompaktowy i kanoniczny sposób w ISO Prolog, aby określić związek obu? Oznacza to, że chcemy definicję dla (meta-logiczna) predykatówZwiązek dwóch zmiennych zbiorów
varset_union(VarSet1, VarSet2, Union)
oraz lista list
varset_union(VarSets, Union)
gdzie Union
jest lista unikalnych zmiennych danego VarSet
s.
Oto overview of the built-ins w ISO/IEC 13211-1: 1995, w tym Cor.2: 2012.
Należy zauważyć, że definicja z 'setof/3' będzie produkować listę zmiennych w kolejności zależnej od realizacji - co oznacza w zasadzie losowej kolejności - podczas gdy' term_variables/2' ma dobrze zdefiniowaną kolejność . – false
I pod względem wydajności rozwiązanie 'setof/3' jest znacznie gorsze [przynajmniej w SWI-Prolog]. –
'setof/3' używa' term_variables/2' do określenia zmiennych do przetworzenia. A to dopiero pierwszy krok ... – false