[racket] Function composition in Racket

From: Gregory Woodhouse (gregwoodhouse at me.com)
Date: Tue Oct 16 13:49:16 EDT 2012

I'm intrigued. I suppose pattern based macros could be used to implement operations like + and *, and passing to the field of quotients should formally be no different from rational arithmetic. Are you interested in Chebyshev polynomials for a particular reason (e.g, applications to differential equations) or as part of a more general mathematics library?

I may as well throw in a big item on my "wish list". It would really be nice to have a tool for visualizing surfaces defined either explicitly

z = f (x, y)

or implicitly

g(x, y, z) = c

using wire mesh diagrams or a comparable technique. 

But back to polynomials, I think I'll try writing something simple. What would be interesting is yo have s nice way of representing algebraic structures in Racket so that standard constructs like algebraic extensions such as Q(i) don't have to be strongly coupled with the definition of the base ring/field. Maybe I'm asking for functors (in the mathematical sense) and categories. 

Sent from my iPhone

On Oct 16, 2012, at 9:08 AM, Neil Toronto <neil.toronto at gmail.com> wrote:

> I'd have to have the terms indexed by two different orderings (nondecreasing in x's degree and nondecreasing in y's), or be willing to sort. That seems tricky or slowish, but much better than what I've had in mind. It should also work with other orthogonal bases, like the Chebyshev polynomials, using Clenshaw's algorithm (of which Horner's is a special case).
> To let you know where I'm going with this, I'm considering designs for `math/polynomial'. I want a data type that can represent sparse polynomials over any ring, with any orthogonal basis in that ring. Basic polynomial ops would be +, *, and conversion to another basis or another ring type (e.g. from Exact-Rational to Flonum). A quotient polynomial type would lift polynomial rings to fields.
> I'd also like another basic op to be generating the syntax of a function that evaluates the polynomial. Polynomials could then be built at expansion time - say, by building a Taylor, Chebyshev, or minimax approximation  - and then evaluated quickly at runtime.
> It looks like you know what you're talking about (you probably understood all the preceeding text and can even point out errors :D), so I'd love to hear any ideas you have along these lines.
> Neil ⊥

Posted on the users mailing list.