#10963: More functorial constructions
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  stumpc5
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.2
      Component:  categories         |   Resolution:
       Keywords:  days54             |    Merged in:
        Authors:  Nicolas M. Thiéry  |    Reviewers:  Simon King, Frédéric
Report Upstream:  N/A                |  Chapoton
         Branch:                     |  Work issues:
  public/ticket/10963-doc-           |       Commit:
  distributive                       |  977a940beba7ed96722a24e36cd81595336350ef
   Dependencies:  #11224, #8327,     |     Stopgaps:
  #10193, #12895, #14516, #14722,    |
  #13589, #14471, #15069, #15094,    |
  #11688, #13394, #15150, #15506,    |
  #15757, #15759                     |
-------------------------------------+-------------------------------------

Comment (by vbraun):

 Replying to [comment:555 nthiery]:
 > > but there you cannot have accidental clashes either.
 > Take two unrelated classes `C` and `D` that both *define* a method
 > `x.foo()` but with different semantic. Take a subclass `E` of `C` and
 > `D` [...]

 There is still no accidental clash. If you inherit from C and D then you
 get exactly what you ask for. Your example is simply one where the
 programmer actually does not want to inherit from both C and D. That is
 fine, you also have the possibility to inherit only from one of them or
 from neither. And you have that flexibility precisely because a) you have
 a clear and concise syntax for specifying the parents and b) distinct
 classes stay separate as long as you don't explictly tie them together.

 > (1) We are modeling natural mathematical facts, so the reader can use
 >     that information to understand the code.

 All of Sage is about modeling natural mathematical facts. Just because you
 know Wedderburns theorem does not mean that everybody who ends up
 implementing a ring knows it. And it certainly does not mean that somebody
 who reads the code is going to expect that it is magically applied behind
 the scenes. In fact, I claim that it is quite astonishing when you
 encounter it for the first time. And if I may quote
 http://en.wikipedia.org/wiki/Principle_of_least_astonishment: "If a
 necessary feature has a high astonishment factor, it may be necessary to
 redesign the feature."

--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:556>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to