Re: iset-search implementations
Wolfgang Corcoran-Mathe 11 Dec 2020 18:41 UTC
On 2020-12-10 22:04 -0500, John Cowan wrote:
> On Thu, Dec 10, 2020 at 9:47 PM Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz>
> wrote:
>
> That's fine. If `search' is set by convention, then this is, indeed,
> > an implementation issue. I may have to fall back to the two-pass
> > search-then-adjoin approach, since I doubt there's a better way.
> >
>
> If the value searched for is the same (in the sense of eqv?) as the
> new-value passed to the update continuation, don't do anything: this case
> arises in "do nothing if the element is already present" cases. If it is
> different, do a delete and an insert. I can't see anything better than
> that.
Done.
> I haven't looked at the implementation: would it be more efficient to see
> whether the insert or the delete comes first, and then do the processing in
> that order?
There might be minor differences in efficiency in some cases, but the
asymptotic complexity of insert ∘ delete is the same as that of
delete ∘ insert. So we'll stick with the former order for now.
--
Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz>
"A picture is worth 10k words--but only those to describe the picture.
Hardly any sets of 10k words can be adequately described with pictures."
--Alan J. Perlis