guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sorted?


From: Mikael Djurfeldt
Subject: Re: sorted?
Date: Mon, 9 Dec 2024 13:20:48 +0100

On Mon, Dec 9, 2024 at 12:43 PM <tomas@tuxteam.de> wrote:

> On Mon, Dec 09, 2024 at 11:37:33AM +0000, Ricardo G. Herdt wrote:
> > Hi Jeremy,
> >
> > Am 09.12.2024 11:21 schrieb Jeremy Korwin-Zmijowski:
> > > The reference says :
> > >
> > >    Scheme Procedure: *sorted?* items less
> > >    C Function: *scm_sorted_p* (items, less)
> > >
> > >        Return |#t| if items is a list or vector such that, for each
> > >        element x and the next element y of items, |(less y x)| returns
> > >        |#f|. Otherwise return |#f|.
> > >
> > > I think the description should be :
> > >
> > >    Return |#t| if items is a list or vector such that, for each element
> > >    x and the next element y of items, |(less y x)| returns |#t|.
> > >    Otherwise return |#f|.
> >
> > Actually no, since less is applied to y and x in that order. This way
> > (sorted? '(1 1) <) correctly returns #t as your experiments show.
>
> I don't get it. (< 1 1) is /always/ #f, regardless of the order of the
> ones?
>
> I'm as confused as Jeremy is.
>

sorted? checks whether *a list* has its elements sorted. It does not apply
a predicate to all successive pairs like some fold operation. Two
consecutive equal elements are in sorted order since it wouldn't matter if
you switched them. The less operation is used to sort the list (or check
it).


reply via email to

[Prev in Thread] Current Thread [Next in Thread]