Eli, I'm moving part of our discussion to the dev list for others' input.

On 09/25/2011 04:39 PM, Eli Barzilay wrote:
Three hours ago, Neil Toronto wrote:
It's going well. We could put it in the repo later today if you
want. I just have to consolidate a bunch of parameters first, and
move bits of code around to their final resting places.

That would be wonderful.  Just to clarify, every time I see the C mess
there I need to throw up, and I think that I'm not the only one.

It's ready now, but I have questions.

The new plot library is actually two modules. The old 'plot' assumed that a "plot data" only needed to DRAW in a plot area, so a "plot data" is just a lambda that accepts a plot area argument. There's no way for the "plot data" to negotiate its drawing bounds, request ticks and tick labels, or report the data necessary to assemble a legend.

So I had to redesign it all. In the new plot library, a "renderer" has those nifty abilities. The new library has scads of other improvements, more plot types, and a richer API. I'll call its main module "Module 1".

"Module 2" is a compatibility module, a thin wrapper around Module 1. It's a drop-in replacement for the old 'plot' module.

Questions:

1. Obviously, Module 2's path should be 'plot'. Right? And its documentation needs a note that it's deprecated. (I'll do that.)

2. Should Module 2 send a deprecation warning to stderr or the log when 'require'd?

3. Should Module 1's path be 'racket/plot'? I've also thought of 'new-plot' (which is a cute pun on "gnuplot" but inconsistent with other names) and 'rackplot' (which is consistent with 'racklog' and 'rackunit'). Could also go with "omgraph" or whatever. I'm open to suggestions.

4. I didn't write a 'plot/extend' replacement because it would have been painful and bit convoluted. Also, nearly everything 'plot/extend' provides is more easily done using either the old 'plot' or Module 1. As of now, it will just quietly disappear. Is that okay?

5. I'll have general questions about how to put things in the collects. I could probably answer them all by looking at a GOOD example. What, in your opinion, is the archetypal collects library, which would show me How It Should Be Done?

--

Last thing: I haven't replaced the 'fit' function, because it has nothing to do with plotting or the plotting C library! I don't know why it's in 'plot' in the first place. The C library behind 'fit' will have to stay for now, so there will still be a bit of a C mess that makes Eli throw up.

I can replace that too - eventually. I think it would be best to separate concerns for now.

Neil T
_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev

Reply via email to