In FriCAS

(1) -> x:Polynomial(Integer)
                                                                   Type: Void
(2) -> x + 1/2

            1
   (2)  x + -
            2
                                          Type: Polynomial(Fraction(Integer))

On 1 October 2015 at 15:28, 'Bill Hart' via sage-devel
<sage-devel@googlegroups.com> wrote:
>
>
> On 1 October 2015 at 20:23, William Stein <wst...@gmail.com> wrote:
> <SNIP>
>
>> By the way, look at how coercion "works" in Magma:
>>
>> $ magma
>> Magma V2.18-5     Thu Oct  1 2015 16:59:12 on compute3-us [Seed =
>> 629019987]
>> Type ? for help.  Type <Ctrl>-D to quit.
>> > R<x> := PolynomialRing(IntegerRing());
>> > x + 1/2;
>>
>> >> x + 1/2;
>>      ^
>> Runtime error in '+': Bad argument types
>> Argument types given: RngUPolElt[RngInt], FldRatElt
>
>
> We are call this "complex coercion" in our Nemo discussions
>
> [...as opposed to simple coercion:
>
>  R, x = PolynomialRing(QQ, "x")
>  K, a = NumberField(x^3 + 3x + 1,"a")
>
>  a + 1/2 # simple coercion since the result lives in K
> ]
>
> It's definitely quite easy to add complex coercion in Nemo/Julia (via Julia
> generic catchall functions), but I'm resisting it quite obstinately for the
> time being.
>
> One reason is that it easily leads to functions that are not
> type-consistent. You can quite easily write functions whose output type
> depends on the values, rather than the types of the inputs. This completely
> screws with type inference and Jit compilation, though Julia does allow it.
>
> Since Nemo focuses on highly performant generics for the time being, I'm
> trying to avoid introducing complex coercions, at least until we have a very
> fast core. (Though naturally, mathematicians are keen to introduce this
> feature as soon as possible, since it is basically germane to any real
> mathematics.)
>

-- 
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 http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to