ref: a40a18fc0181b2b0c59a20dcd89bee7b38d63e40
parent: 81fa4d4a176b5e330ffe20b2ed9f92b10ffc5ba9
author: Peter Mikkelsen <peter@pmikkelsen.com>
date: Sun Jul 11 14:53:02 EDT 2021
Using member and then cut always picks the first element anyways, so just pick it with = instead
--- a/stdlib.pl
+++ b/stdlib.pl
@@ -264,9 +264,7 @@
bagof_loop(Witness, S, Instances).
bagof_loop(Witness, S, Instances) :-
- S \== [],
- member(W+T, S),
- !,
+ [W+T|_] = S,
bagof_wt_list(S, W+T, WT_list),
bagof_split(WT_list, W_list, T_list),
( bagof_unify_list(Witness, W_list), Instances = T_list