On Mon, Feb 5, 2018 at 6:44 PM, <[email protected]> wrote: > Dear Fricas developers > > > > (I'm and not sure that this is the good forum to address my question, but I > cannot find any other.) >
This is the forum for discussion of both users and developers. > > First, thanks you all for your engagement to keep this great project alive! > > > > I'm a researcher in theoretical & mathematical physics with some knowledge > (at different levels) of Mathematica (the current standard in th phys), > Sympy, Maxima and Haskell. (No Lisp/Boot/Spad/Aldor alas!) > That's an interesting skill set. May I ask how did you get in touch with FriCAS? > > In these days I'm trying to learn Fricas and I'm playing with the online > sandbox. > I'd say install FriCAS on a local machine would provide a more responsive interface. Do you have any problems on installation? > > (As a sad aside, I must say that the current status of fricas installation & > language documentation is "sub-obtimal" (I can give more details if you're > curious). Please do. We are aware of some of these problems, but some progress are kind of slow. > One must be much much more motivated than an average cas-beginner > not to run away, to stay & progress. Of course this is not a blame, I > understand that these tasks are tedious & heavily time consuming, and I see > that there is some promising effort in progress.) > > > > The first thing I like to understand about a CAS is how evaluation works > ...so, unable to find this topic on the documentation, I did some trials... > And here's my question: > Which documentation? This is in chapter 5 section 1 of the user guide, "Immediate and Delayed Assignments" https://kfp.bitbucket.io/fricas-ug/section-5.1.html > > a:=b; > > b:=1; > > [a,eval(a),simplify(a)] > > > > returns [b, b,b]. > > > > How can I force the interpreter in using the information that VALUE(b) = 1 > in expressions containing a? > One way is to use delayed assignment: a == b b == 1 a -- returns 1 > > This one-level evaluation behavior is similar to the one found in masyma, > but there there is ev(a, infeval) which does the job and one gets 1. > > On the other hand Mathematica uses fixed-point infinite evaluation by > default so it returns 1 for a. > The "fixed-point infinite evaluation" sounds like delayed assignment I mentioned above. BTW, is this possible in Sympy? > > The answer: > > eval(a, 'b = b) > > returns 1 but it is not satisfactory to me because it requires the apriori > knowledge of all the variables involved in Value (a). > >From your description, what you want is essentially 'eval' in the sense of a dynamic language (like Lisp), which is difficult or useless in a strongly typed language. It can be implemented in interpreter by tricks and hacks, but I don't think it's useful. I think this mechanism violates static/lexical scope, and can cause great confusion. For example, I have seen many posts on maxima-discuss about the confusion caused by 'ev'. > > Is there a better way to get 1 from a, or maybe not having it is a feature > of the language? > > > > Thanks for your time > > > > ric -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" 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 https://groups.google.com/group/fricas-devel. For more options, visit https://groups.google.com/d/optout.
