[m-users.] More optimization away

Mark Brown mark at mercurylang.org
Thu Dec 21 12:55:12 AEDT 2023


On Wed, Dec 20, 2023 at 10:38 PM Volker Wysk <post at volker-wysk.de> wrote:
>
> Am Mittwoch, dem 20.12.2023 um 20:21 +1100 schrieb Mark Brown:
> > On Wed, Dec 20, 2023 at 6:02 PM Volker Wysk <post at volker-wysk.de> wrote:
> > >
> > > Hi
> > >
> > > I've made my predicate dependent on the IO state, in order to prevent it
> > > from being optimized away. However, the IO state isn't used inside the
> > > predicate. So will this be optimized away in a non-default semantics?
> >
> > Not with strict semantics. A hypothetical lazy implementation might
> > optimize this away, but then I wouldn't expect this technique to work
> > well in lazy languages generally.
>
> Okay... After all, it doesn't seem to be a good idea to try to write
> programs that work in all semantics.

Rather, it doesn't seem to be a good idea to try to write programs
*that use exceptions to indicate real results*, at least not if you
need that level of portability.

Having said that, we could always add to the standard library a det
version of throw that takes the I/O state. All implementations need to
respect the semantics documented in the standard library, so (unlike
your example code) there would be no way to infer that the final I/O
state is the same as the initial one, thus no way that the
optimization could be logically justified. Personally, though, I
prefer sticking with my first paragraph.

Cheers,
Mark

>
> Cheers,
> Volker
> _______________________________________________
> users mailing list
> users at lists.mercurylang.org
> https://lists.mercurylang.org/listinfo/users


More information about the users mailing list