Email list hosting service & mailing list manager

Finishing SRFI 234 (Topological Sorting) Lassi Kortela (22 Nov 2022 07:09 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Shiro Kawai (22 Nov 2022 11:26 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Amirouche (30 Nov 2022 12:24 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Marc Nieper-Wißkirchen (30 Nov 2022 12:31 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Lassi Kortela (01 Dec 2022 07:19 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Maxime Devos (22 Nov 2022 17:36 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Lassi Kortela (22 Nov 2022 17:55 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Marc Nieper-Wißkirchen (30 Nov 2022 09:14 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Shiro Kawai (30 Nov 2022 09:52 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Marc Nieper-Wißkirchen (30 Nov 2022 10:14 UTC)
Re: Finishing SRFI 234 (Topological Sorting) Marc Nieper-Wißkirchen (30 Nov 2022 11:03 UTC)
Re: Finishing SRFI 234 (Topological Sorting) John Cowan (11 Jan 2023 09:18 UTC)

Re: Finishing SRFI 234 (Topological Sorting) Lassi Kortela 01 Dec 2022 07:19 UTC

> I still think that signaling an error is wrong (and against the spirit
> of the R[67]RS exceptions).  See here:
> https://srfi-email.schemers.org/srfi-234/msg/20488634/.

I'm sympathetic to both interpretations.

A cyclic dependency graph feels similar to a parse error. An interpreter
expects to parse a valid program; make expects an acyclic graph. In both
cases the user can mess up and provide invalid input.

A parser true to the functional style would probably return a ParseError
object instead of raising it. In the Go language, error objects are
returned all the time where most other languages would raise them.

As an aside, `make` would be capable of making targets that are not part
of a cycle. So giving up in case of a cyclic graph may block useful
functionality in some cases. However, this would require the SCC algorithm.

Threads like this show that SRFI may not be the right forum for this
procedure. After all, toposort can be implemented portably with
reasonable efficiency.