Since there is currently a call to enrich the utils and existing libraries, please allow me to make a request.
I would find utility from the addition of a new higher-order function, similar to the find_all function currently implemented. In particular, a function find_first(Template, Call, Limit) = Solutions that returns a list of up to Limit instances of call(Call) that are true. In cases where there is an exceedingly large number of solutions, this would allow one to find 1 or multiple solutions without having to enumerate all solutions first. Such a function can be defined like this using the global_map.
find_first(Template, Call, N) = Solutions =>
SolMap = get_global_map(),
SolMap.put(sol, []),
SolMap.put(nsol, 0),
(find_first_aux(Template, Call, N, SolMap) -> true ; true),
Solutions = SolMap.get(sol).
private
find_first_aux(Template, Call, N, SolMap) =>
call(Call),
SolMap.put(sol, SolMap.get(sol) ++ [Template]),
NN = SolMap.get(nsol) + 1,
SolMap.put(nsol, NN),
(NN == N -> true ; fail).
This would be great if it formed a name scope like find_all.