This file contains the TODO milestones for Math::Symbolic.
+ => Met
- => Not met
Sooner-than-later:
- Better testsuite as in: bring in some order and better coverage.
- Clean up documentation.
- Update TODO and clean it.
- Make sure TODO and sourceforge task/issue/whatever trackers are in
sync.
- Write a coherent, easy-to-understand, central section on variable
signatures and their purpose.
- Should the operators/functions really be listed in the MS::Operator
man page or should they be listed in a more central place like
the main man page? Or both? (Duplicate docs are bad!)
- Whatever's done about that last point, make sure the docs refer to
the correct portion about the operator list.
Random and unordered thoughts and ideas:
- Differentials
- Vector operations
- Vector analysis
- Equations
- Symbolic calculator
- Some idea of types/contexts?
- n-ary operators
- Equation solver
- Canonical form
- Improved term simplification! MUCH IMPROVED!
- Integration (*laugh*)
- Matrices
Version 0.120:
- Major change to MS::Operator guts:
- Separate ordinary operands such as the ones found with
arithmetic operators and the special operands such as the
deriving variable with derivatives.
Ordinary operands are to stay in the {operands} hash entry.
Special operands are to be put into a new {special} hash entry.
{special} is an array ref containing the special operands.
These are hashes themselves. They contain certain keys:
- type: The type of operand. May be "variable", "tree", "constant",
etc. ("identifier" even).
- value: The "payload".
- All code must be adapted to be aware of this change.
- This fixes the trouble one may have when "implementing" a
variable used for deriving, etc.
- Makes summation possible as a new operator. The function would
be the only ordinary operand. Lower, upper, and index variable
would all be special.
- Documentation for the changes.
- Tests for the changes.
[outdated!?] Version 0.130: (major milestone!) [pushed back from 0.110]
- Instead of all terms being either a Math::Symbolic::Operator, a
Math::Symbolic::Variable, or a Math::Symbolic::Constant object,
introduce actual Math::Symbolic objects as container objects for
any Math::Symbolic trees.
- These should then also hold symbol tables for variables.
Two reasons:
+ a) The parser can't parse variables without knowing their names
in advance. (Update: That's bullshit. The M::S parser now does
this perfectly all right.)
- b) Math::Symbolic objects should then be able to hold other
Math::Symbolic objects (which needn't necessarily have an
implementation at the time they're used!) as (unknown)
functions with a defined signature.
- Symbol tables for variables.
- Make sure variables are unique in any Math::Symbolic tree.
- Store variable values in the symbol table, not in the objects
themselves.
- Make sure that when wrapping operators around Math::Symbolic trees,
the operator is *included* in the tree, not the tree included in the
operator object as an operand. (And therefore acting as a function
with a defined implementation which is not the generally desired
behaviour!)
+ [not necessary any more]
According to the previously outlined major changes, make sure the
(as of 0.090) current Math::Symbolic::parse_from_string becomes a
Math::Symbolic OBJECT ONLY method. (Otherwise, the symbol table for
parsing vars is missing.)
+ Find a solution for the problem that parsers would currently need to
be reconstructed for a given symbol table. (performance!)
(Now parsing identifiers as vars.)
- Add tests for the new features.