How to magically define variables and use functional notation instead of methods

i like this post (click again to cancel)
3
i dont like this post (click again to cancel)

I am always too lazy to look up again where it is that one can do these things. Not that I would ever use such dangerous things myself.

  • Magically define variables (so that you don't have to var('y'))
  • Magically define functions (so that one doesn't need boof.annoying_method(), but instead can do annoying_method(boof))

Once it's on here, people can find it more easily and put themselves in more danger.

asked May 21 '11

kcrisman gravatar image kcrisman
6784 14 67 152
There is a rather old sage-devel discussion talking about implicit symbolic variable creation (http://groups.google.com/group/sage-devel/browse_thread/thread/f1286e92d4d2ce83/bfc0b357f3635435). But I don't think this exists in Sage, currently. Kelvin Li (May 22 '11)
Why would one do those things? Methods are certainly easier to find (tab completion) than functions, and they don't pollute the name space. And why should anything become a symbolic variable that isn't up a tree by the count of three? Simon King (May 22 '11)
@Simon King - you betray your programming prowess with that question :) I agree that in the long run, it is better to do this; however, for people who have never used any command-line interface, both of these things are serious stumbling blocks. Methods aren't always easy to find, either, and pollution of the name space is in the eye of the beholder. That said, notice I say "put themselves in more danger." kcrisman (May 23 '11)
@Kelvin Li - This does definitely exist, I just have forgotten what it is. Also, the thread above speaks to Simon's question, since it points out that math-specific programming languages tend to have these pre-defined - not that we should necessarily, but that it's a non-obvious question. I sure hope someone remembers this answer! kcrisman (May 23 '11)
I'm not sure I understand your question. Are you talking about pre-defining things you might want to use; for example, in your init.sage file? If you're not, I don't know what you mean, since Python will complain about any symbol it doesn't recognize, and I don't believe there is a way to change that. (I could be wrong, though.) Jason Bandlow (May 23 '11)
see 1 more comment

2 Answers:

i like this answer (click again to cancel)
2
i dont like this answer (click again to cancel) kcrisman has selected this answer as correct

It looks like it is only implemented in the notebook: execute automatic_names(True). (See #7482 for the relevant ticket.)

link

posted May 23 '11

John Palmieri gravatar image John Palmieri flag of United States
2700 9 23 60
http://www.math.washingto...
I knew I could count on you! See http://www.sagemath.org/doc/reference/sagenb/misc/support.html as well for doc. Thanks - in retrospect, should have been obvious, but I was hung up on the word 'magic'... kcrisman (May 23 '11)
i like this answer (click again to cancel)
1
i dont like this answer (click again to cancel)

I have a related question. Would it be possible to have variables with bars on them Something like this

rhobar=var('\bar{rho}')

Each time I use bar I cannot copy paste the latex output in my paper/document.

link

posted May 23 '11

Shashank gravatar image Shashank flag of United States
1580 7 22 56
Your question should not be listed as an "answer" to the question on this page. Anyway: "var('rhobar', latex_name='\\bar{\\rho}')" does what you want, as does "var('rhobar', latex_name=r'\bar{\rho}')" John Palmieri (May 23 '11)

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[hide preview]

Question tools

Tags:

Stats:

Asked: May 21 '11

Seen: 220 times

Last updated: May 23 '11

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.