On Mon, Dec 09, 2024 at 01:20:48PM +0100, Mikael Djurfeldt wrote: > On Mon, Dec 9, 2024 at 12:43 PM <to...@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
signature.asc
Description: PGP signature