On 2016-10-12 16:29, Travis Scrimshaw wrote:
> On Wednesday, October 12, 2016 at 9:01:51 AM UTC-5, Daniel Krenn wrote:
>     On 2016-10-12 13:39, Jori Mäntysalo wrote:
>     > More about this: In posets.py there is
>     >
>     >     try:
>     >         elements = D.topological_sort()
>     >     except Exception:
>     >         raise ValueError("Hasse diagram contains cycles.")
>     >
>     > and that should be "except TypeError", as that is what
>     > .topological_sort() raises from DiGraph that is not acyclic.
>     >
>     > But should a function without parameters like foo.bar() ever raise
>     > TypeError? If we can run that, then the object foo is of the right
>     type
>     > and has bar()-function. Or where goes the limit between TypeError and
>     > ValueError, i.e. what we mean by 'type' -- is DAG a "type" or just a
>     > DiGraph with some special properties?
>     There could be a ContainsCycleError which has RuntimeError as a base...
> IMO a ValueError is better than a TypeError because topological_sort
> (implicitly) takes the DiGraph as an input, and the input type is
> correct, just its value is wrong. Although this is more towards
> bikeshedding...

I agree that a ValueError is better than a TypeError. IMHO even better
is a (special) RuntimeError, as checking if it contains a cycle needs
(at least somehow) the sorting. Thus it happens when the algorithm has
already started. (bikeshedding... ;) )


You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to