[m-users.] lists and sets, unordered or ordered.

Richard O'Keefe raoknz at gmail.com
Wed Oct 4 13:34:59 AEDT 2023


I did some benchmarks years ago to figure out when it was worth sorting
lists in order to do set operations on them  , and when it was OK to keep
them unordered.  It has been a long time, but I was shocked at how tiny
the crossover point was.  The takeaway lesson was that there was just
no point in using unordered lists for sets.  If your data were so small
that unordered lists were good enough, they were too small for the cost
of sorting to be worth bothering about.

On Wed, 4 Oct 2023 at 10:16, Sean Charles (emacstheviking) <
objitsu at gmail.com> wrote:

> It doesn't need to be unsorted, I just didn't want to waste time sorting
> something that can function unsorted that's all.
>
> > With the the set_c234.to_sorted_list/1
>
>
> ^^^^^^ That's sorted though, by it's very name and the power of Greyskull
> etc?
>
>
>
> > On 3 Oct 2023, at 22:13, Volker Wysk <post at volker-wysk.de> wrote:
> >
> > Am Dienstag, dem 03.10.2023 um 22:07 +0100 schrieb Sean Charles
> > (emacstheviking):
> >> In my detection, the same missile might hit more than one object if they
> >> are close: thus I only wanted to process it once even of it hits five
> >> things, so I wanted deduped list just to save setting the hit flag five
> >> times if that makes sense.
> >>
> >> I checked out all the others sets, the only one I saw that looked good
> was
> >> set_unordlist but is says 'may contain duplicates'.
> >>
> >> How do I get an unsorted deduped list from a set then, educate me, i
> sure
> >> as hell need it!
> >
> > With the the set_c234.to_sorted_list/1 function, for instance. I still
> don't
> > know why your set needs to be unsorted.
> >
> > V.
> >
> >>
> >> HAHA It's possible I have missed it in the melee, like 'cirle' not
> 'circle' las week, it's late, I'm tired
> >> :D
> >>
> >>> On 3 Oct 2023, at 22:04, Volker Wysk <post at volker-wysk.de> wrote:
> >>>
> >>> Hi
> >>>
> >>> You can get a sorted de-duped list from a set. Why do you need an
> unsorted
> >>> one? If it's efficiency, you need to have it sorted, unless you have
> only a
> >>> few elements.
> >>>
> >>> But be aware that there is the "set" module and five "set_*" modules.
> The
> >>> "set" is using ordered lists. That's inefficient for large sets. Use
> the
> >>> other modules when you have a big set.
> >>>
> >>> Cheers,
> >>> Volker
> >>>
> >>> Am Dienstag, dem 03.10.2023 um 21:55 +0100 schrieb Sean Charles
> >>> (emacstheviking):
> >>>> Indeed. nothing in my drafts folder and I swear it was complete
> before I hit send... well,
> >>>> basically,
> >>>> is there a reason you can't get an unsorted de-duped list from a set?
> >>>>
> >>>> That's all...   :D
> >>>>
> >>>>> On 3 Oct 2023, at 21:53, Volker Wysk <post at volker-wysk.de> wrote:
> >>>>>
> >>>>> Hi, Sean
> >>>>>
> >>>>> Your message suddenly stops in the middle of a sentence.
> >>>>>
> >>>>> Volker
> >>>>>
> >>>>> Am Dienstag, dem 03.10.2023 um 21:39 +0100 schrieb Sean Charles
> >>>>> (emacstheviking):
> >>>>>> I've just completed a generic typeclass based collision detection
> system and learned quite a bit doing it!
> >>>>>>
> >>>>>> As I was reading the module docs, it seems that there is no
> 'unordered set without duplicates' unless I missed it, which is entirely
> reasonable.
> >>>>>>
> >>>>>> The output from the collision detection  is two sets of integers,
> these are the identifiers of the missiles and the things that were hit at
> the moment. I now want to take this list and then set the '^hit' flag for
> every missile in that list, for example, the existing code will then no
> longer render it and remove it on the next iteration.
> >>>>>>
> >>>>>> I used sets because they de-dupe as you go, meaning that my
> checking process is simply iterating two loops, m x n, m missiles and n
> moving targets, for now it is naive and will probably always be fine given
> the limited numbers of things on screen at any one time.
> >>>>>>
> >>>>>> There seems to be no way to get an unordered, deduplicated list
> from a set, I can use set_unordlist but that leaves duplicates.
> >>>>>>
> >>>>>>
> >>>>>> For now I've decided to use set_unordlist, at the cost of maybe
> updating the same missile record more than once poost-collision detection,
> it's not going to kill anything really but mentally, and from a purity
> point of view it feels 'less optimal' than I wanted. Failing that I might
> just usr  list.member and use lists for everything like I did!
> >>>>>>
> >>>>>> I just wondered what the reasons were for not having the ability to
> get an unsorted
> >>>>>> _______________________________________________
> >>>>>> users mailing list
> >>>>>> users at lists.mercurylang.org
> >>>>>> https://lists.mercurylang.org/listinfo/users
> >>>>>
> >>>>> _______________________________________________
> >>>>> users mailing list
> >>>>> users at lists.mercurylang.org
> >>>>> https://lists.mercurylang.org/listinfo/users
> >>>>
> >>>
> >>> _______________________________________________
> >>> users mailing list
> >>> users at lists.mercurylang.org
> >>> https://lists.mercurylang.org/listinfo/users
> >>
> >
>
> _______________________________________________
> users mailing list
> users at lists.mercurylang.org
> https://lists.mercurylang.org/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/users/attachments/20231004/b1a22a43/attachment.html>


More information about the users mailing list