guile-user
[Top][All Lists]
Advanced

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

Re: sorted?


From: tomas
Subject: Re: sorted?
Date: Mon, 9 Dec 2024 13:37:47 +0100

On Mon, Dec 09, 2024 at 01:20:48PM +0100, Mikael Djurfeldt wrote:
> 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).

Thanks for your explanation. I must admit that I'm still confused. Perhaps
I'll have to have a look at the implementation.

I'm sometimes slow :-)

Cheers
-- 
t

Attachment: signature.asc
Description: PGP signature


reply via email to

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