REDUCE is a portable general-purpose computer algebra system. This package enables users of Julia to use this programmable CAS inside Julia with methods that automatically parse queries and their output.
It currently supports both 0.6 and 0.7 version of Julia. See README and docs for examples.
At this point in the development of this module, there should be enough documentation with examples available for users to see what they can do with it. The way it currently works is by piping the IO from Julia with the upstream reduce binaries provided on SourceForge. In time, it will be possible to port these methods into native Julia or to make upstream modifications that enable the use
C interfaces, with other planned optimizations for the Julia-Reduce parser performance.
It will be interesting to see what kind of use cases that users will come up with. Due to the large amount of generated code produced by this module, all generated code has not been individually tested for special input or output scenarios. However, the generalized nature of the parser-generator has been well-tested for robustness, even though each individual generated method is not tested yet.
With this package, it is easily possible to extend the integration of Reduce with the Julia language, by use of the
parsegen method. Regular users don’t need to use it, but for developers who are interested in extending Reduce: it is worth knowing that it is very simple to create more specialized call methods. An example of how this can be done is the
ReduceLinAlg package, which uses
Reduce and provides an additional set of linear algebra related methods. The JuliaReducePkg organization has been created in order to organize further extensions and additional packages created with the
Reduce parser and its features.
This discourse thread, the gitter page, and the issues and pull-requests can be used to provide feedback.
Issues with the upstream REDUCE binaries can be resolved with the collaborators on SourceForge.
If you come up with some interesting use-cases for this, you are free to communicate them here too.