Ralf

1)
Many graphs in chapter seven FriCAS UG do NOT correspond to what announced in 
the text (I was preparing a list of patches but you anticipated me).

In 2D graphs this is due to a missing 'title=...' in the invoked command draw  
and also due the fact that 'unit=...'  shows nothing because the system default 
is do not show units. This way one has to manually switch them via the control 
panel, as Johannes remarked, or by invoking units.

This behavior is highly user-unfriendly: if a user takes the time to write 
unit=... in the command, that likely means that s/he wants to see them 
(immediately!)

So, to me, the simplest & user-friendliest solution would be a patch that adds 
a line that shows the unit whenever the unit=...  option is there (maybe by calling 
units, but I do not know if the viewport is available at that level). Right now I'm 
unable to suggest more...

2)
Speaking of the wide family of draw functions, I have the impression that there 
is some interpreter black magics involved in how options are dealt with.

The problem is that one needs functions with a variable number of formal 
parameters (the options).

In the API I see signatures involving 'List DrawOption' :

draw: (Ex, SegmentBinding Float, List DrawOption) -> TwoDimensionalViewport

draw(f(x), x = a..b, [ title="bim", units=[1.0..2.0,1.0..2.0] ])

but in interpreter you invoke them WITHOUT a list of options i.e.

draw(f(x), x = a..b, title="bim", units=[1.0..2.0,1.0..2.0])

This conflicts with the API, and I guess plain SPAD

... I hate exceptions!

I see that there is some hardcoded code in the interpreter dealing with draw
src/interp/i-funsel.boot#L300  [1]
but I do not really understand if the aforementioned magic happens here. Hope 
that Waldek will pass and prune the un-necessary here...


3)
Speaking of user-unfriendliness of draw functions, I would like to emphasize 
that draw for algebraic curves draw(f(x, y) = g(x, y), x, y, l) [2] introduces 
an exception to the usual syntax for ranges, obliging the user to use an adhoc 
option 'range':

draw(x^2+y^2 =1, x, y, range==[0..1,0..1])

instead of the usual syntax

draw(x^2+y^2 =1, x = 0..1, y=0..1)

... I hate exceptions!


ric

[1] https://github.com/fricas/fricas/blob/master/src/interp/i-funsel.boot#L300
[2] 
https://github.com/hemmecke/fricas/blob/master-hemmecke/src/algebra/draw.spad#L962

--
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.

Reply via email to