On Tuesday, March 27, 2018 at 2:57:12 PM UTC-5, Michael Orlitzky wrote:The 
thread was about casual users, who shouldn't have to care about the 
implementation details behind what "0.5" means. To a casual user, 0.5 is 
one-half. I didn't bring this up to fight about by pet bug again, but 
because of the similarity between this and the fact that 12/4 is not 
three. Casual users don't want to hear about the coercion framework, 
categories, maps and what-not -- they just want to be able to put in 
trivial homework problems and get out the right answers. 

I definitely agree with Michael, and would go further and say that this 
doesn't just affect students who want to solve their homework problems, but 
also people who teach physics and even likely many people with an extensive 
knowledge of mathematics. I have used Mathematica Far more in my physics 
classes than I have in my mathematics classes, and my physics professors 
would definitely expect the rank of these two matrices to be the same, if 
they are indeed equivalent. Actually, so would all of my mathematics 
professors, I am fairly sure. In my opinion, the purpose of an ideal CAS is 
to do mathematics/computation, not get bogged down with the technical 
details. So even if, by the nature of floating point numbers, the ranks 
should be different, that is absolutely useless to most people. Most people 
are not interested in the intricacies of floating point numbers, the CAS 
should understand the users likely intention and leave these special case 
usages (such as having floating point numbers work non-associatively) as 
options (not the default). Why not assume by default that when someone 
enters a floating point number, they intend it as a member of QQ, at least 
in this case. 


Why not introducing a different function, is_prime_integer() say, keeping 
> is_prime() as it is now?
> Of course, x.is_prime_integer(), or is_prime_integer(x), would return 
> ZZ(x).is_prime().
> Then, for the casual user, we should advertise (in examples, tutorials, 
> etc.) the use of is_prime_integer() over is_prime().
> Note that the casual user may discover is_prime_integer() by the standard 
> TAB mechanism, since its name starts by "is_prime". Facing the choice 
> between the two functions, he would probably (hopefully?)  opt for 
> is_prime_integer(), which is self-explanatory.


I am actually not a fan of this solution, though I definitely appreciate 
the intention. For me, the goal should be that the easiest to use 
function(in the sense that it is the one the casual user will likely type) 
is the one that behaves like the average user would want. So, in this case, 
it Should assume that 3/1 is referring to the integer 3, use is_prime on 
the integer, and then also give a warning stating that 3/1 was interpreted 
as the integer 3. Then, we should have a function like is_prime_in_ring, 
which functions the way is_prime functions right now, ie it takes into 
account what the parent was instead of making the common simplification. 
The warning I mentioned earlier could even tell the use that if they want a 
ring dependent result, then they should use is_prime_in_ring. Again, the 
vast majority of users are assuming 3/1 = 3, and paying attention to the 
parent is a case of special usage. 

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

Reply via email to