Forall - Prologue

Can someone explain how the predicate predefine to forallfind the minimum values ​​in a list?

+5
source share
4 answers

For a list, Lyou can use:

member(Min,L), forall(member(N,L), N>=Min).

However, although this is a good demonstration forall, it is not effective (square complexity instead of linear).

+13
source

or you can use the findall / 3 predicate

findall(Value, minimumValues(Value), minimumValuesList)

it returns a list (minimumValuesList) with elements (all minimum values, on the right).

+4
source

forall/2 ?!

() //... SWI-Prolog min_list/2:

?- listing(min_list).
lists:min_list([], A, A).
lists:min_list([A|C], B, E) :-
        D is min(A, B),
        min_list(C, D, E).

lists:min_list([B|A], C) :-
        min_list(A, B, C).
+2

:

minlist([X], X).
minlist([H|T], Min) :-
    minlist(T, Tmin),
    Min is min(H, Tmin), !.
0

All Articles