Please change the name Lassi Kortela (21 Oct 2022 11:12 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 11:54 UTC)
Re: Please change the name Lassi Kortela (21 Oct 2022 13:03 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 13:16 UTC)
Re: Please change the name Lassi Kortela (21 Oct 2022 14:31 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 15:00 UTC)
Re: Please change the name Lassi Kortela (21 Oct 2022 16:25 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 17:43 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 18:10 UTC)
Re: Please change the name Lassi Kortela (21 Oct 2022 22:32 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (22 Oct 2022 08:03 UTC)
Re: Please change the name Lassi Kortela (22 Oct 2022 11:30 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (22 Oct 2022 11:39 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (22 Oct 2022 11:53 UTC)
Re: Please change the name Marc Feeley (22 Oct 2022 12:19 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (22 Oct 2022 12:29 UTC)
Re: Please change the name Lassi Kortela (22 Oct 2022 13:17 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (22 Oct 2022 13:26 UTC)
Re: Please change the name Marc Feeley (21 Oct 2022 13:17 UTC)
Re: Please change the name Marc Nieper-Wißkirchen (21 Oct 2022 13:26 UTC)

Re: Please change the name Marc Nieper-Wißkirchen 21 Oct 2022 15:00 UTC

Am Fr., 21. Okt. 2022 um 16:31 Uhr schrieb Lassi Kortela <xxxxxx@lassi.io>:

> Common Lisp guarantees a left-to-right order for evaluation (section
> 3.1.2.1.2.3 Function Forms, <http://clhs.lisp.se/Body/03_ababc.htm>) and
> precedence of all kinds. This makes things easier to understand.

It leads to an over-specification, which is, in my point of view, bad.

In the case of `let` and `letrec`, Scheme also allows arbitrary
evaluation orders. From a theoretical point of view, this is great
because it makes Scheme more expressive. This may not be important for
every programmer, but at least for me, as a mathematician, it is.

> > We mustn't forget that a programming language like Scheme is used not
> > only to feed compilers but also to codify algorithms.  For the latter
> > use case, SRFI 236 is more relevant.
>
> Yes, it's good for textbooks. But it doesn't harm a textbook if an
> implementation always runs the code in the same order.

If you prescribe the evaluation order, you make some kinds of tests
impossible (see my previous post).

> >>> When you write  "perform", you
> >>> make clear that the order does not matter for the algorithm you have
> >>> in mind, on the other hand.
> >> Unless the code has bugs, in which case you're obscuring the code.
> >> Language constructs should make it easy to write correct code.
> >> Optimization and annotation are secondary concerns that hurt as often as
> >> they help IMHO.
> > I have the feeling that we are talking past each other...
>
> I feel I understood your point of view, but don't agree with it.

> My main point is that re-ordering without proof of equivalence obscures
> an intrinsic property of imperative programming which people should be
> aware of. Your point is that a human can supply the proof; my
> counterpoint is that humans are known to be bad at such proofs.

My point is a different one. My point is that it is bad if you have no
idea why a certain order is important but happen to find that a
particular order enclosed in "begin" just works.

> It would be great if computers worked declaratively but they don't, and
> pretending that they do always bites people eventually. The remedy is to
> enforce clear boundaries between the imperative and declarative parts of
> a system, which this proposal does not do.

And it's not one of its goals.