Учитывая два списка переменных, что является самым компактным и каноническим способом в ISO Prolog, чтобы определить объединение обоих? То есть, мы хотим, чтобы это определение для (мета-логический) предикатыОбъединение двух переменных наборов
varset_union(VarSet1, VarSet2, Union)
и список списков
varset_union(VarSets, Union)
где Union
представляет собой список уникальных переменных данных VarSet
с.
В настоящем стандарте: overview of the built-ins в ИСО/МЭК 13211-1: 1995, включая Cor.2: 2012.
Обратите внимание, что определение с 'setof/3' будет производить список переменных, в зависимости от реализации порядка - что означает, по существу случайный порядок - в то время как' term_variables/2' имеет хорошо определенный порядок , – false
И с точки зрения эффективности решение 'setof/3' намного хуже [по крайней мере, в SWI-Prolog]. –
'setof/3' использует' term_variables/2' для определения обрабатываемых переменных. И это только первый шаг ... – false