Hi, I suspected it would have something to do with the interpreter.
Thanks for the explanation!

On Mon, May 20, 2013 at 12:02:43PM +0000, Simon King wrote:
> Hi!
> 
> On 2013-05-20, man...@gmx.net <man...@gmx.net> wrote:
> > import bar
> > type( bar.foo( ) )
> >
> > returns
> >
> ><type 'int'>
> >
> > Needless to say, this causes a bunch of new errors if my code assumes
> > that I get a sage type (I came across this because I did something like
> > real( ) on the result).
> >
> > Is this expected behaviour?
> 
> Yes. If you import a Python module, then it is the expected behaviour
> that you get a Python <int> and not a Sage Integer.
> 
> In interactive sessions (command line or notebook) and when you attach a
> .sage-file, then a preparser comes into play. For example:
>   sage: preparse('1')
>   'Integer(1)'
>   sage: preparse('f(x) = x^2')
>   '__tmp__=var("x"); f = symbolic_expression(x**Integer(2)).function(x)'
>   sage: preparse('R.<x,y> = QQ[]')
>   "R = QQ['x, y']; (x, y,) = R._first_ngens(2)"
> 
> So, typing "1" in an interactive session results in a Sage Integer
> *only* because the preparser makes it so. Similarly, the preparser makes
> it possible to define a symbolic function or a polynomial ring in a nice
> syntax.
> 
> But when you write a Python module then there is no preparser. Hence,
> you need to adhere to Python syntax.
> 
> Best regards,
> Simon

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to