On Tue, Nov 29, 2011 at 4:37 PM, Waldek Hebisch <[email protected]> wrote: > Bill Page wrote: >> ... >> A basic design principle of Axiom is that any domain that satisfies >> some category T can be used as a parameter where the formal parameter >> requires T. In other words we can always treat Integer as "just" an >> AbelianGroup or Ring if we want to. Why would we want to hide the >> extra properties of Integer? > > See answer to Ralf for one example. Another one: Complex or > SAE claims that the result is a Field when argument is a Field. > Using > > Complex(AsRing(Complex(Fraction(Integer)))) > > makes sure that result is not a field. >
Yes, this is a good reason. I suppose this can occur whenever some constructor involves conditionals? > ... >> Forgetful functors look like a form of type coercion. We could say >> that Axiom automatically applies such coercions. If there is a good >> reason to want to force such coercions when they would not necessarily >> occur automatically, I wonder if it would not make good sense to >> support this syntactically rather than just in the library. E.g. >> >> Integer::Ring >> >> could be equivalent to your AsRing(Integer). > > No, Integer is a Ring, so the coercion (if supported) would be > no-op. You may call this something other than "coercion" if you wish. > The point is that given a Ring you can test if say, R has GcdDomain. > Forgetful functor makes sure that answer for such question is false. > Yes, that is clear. My point was only that perhaps it should be supported through some simply syntax rather than having to explicitly add such functors to the library for every possible thing we might want to forget. Regards, Bill Page. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/fricas-devel?hl=en.
