Newsgroups: comp.lang.prolog
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!gatech!newsfeed.internetmci.com!btnet!news.compulink.co.uk!cix.compulink.co.uk!usenet
From: alanw@cix.compulink.co.uk ("Alan Westwood")
Subject: Re: least_member_of
Message-ID: <Dn72nw.719@cix.compulink.co.uk>
Organization: Compulink Information eXchange
References: <312C6E26.167EB0E7@bnr.co.uk>
Date: Thu, 22 Feb 1996 20:38:20 GMT
X-News-Software: Ameol
Lines: 25

Graham Thwaites writes:
> largest(Result,[Head|Tail]):-
>       largest1(Tail,Head,Result).

> largest1([],MaxSoFar,MaxSoFar).
> largest1([H|T],MaxSoFar,Result):-
>       (H>MaxSoFar->
>               largest1(T,H,Result)
>       ;
>               largest1(T,MaxSoFar,Result)
>       ).

Slightly more efficient would be:

largest( Result, [Head|Tail] ) :-
        largest1(Tail, Head, Result ).
        
largest1( [], Max, Max ).
largest1( [H|T], Max, Res ) :-
        NewMax is max( Max, H ),
        largest1( T, NewMax, Res ).
        
regards,
Alan Westwood
LPA Ltd.
