RPL/2

A programming language for computations.
Download

RPL/2 Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Joel BERTRAND
  • Publisher web site:
  • http://www.systella.fr/~bertrand/rpl2

RPL/2 Tags


RPL/2 Description

A programming language for computations. RPL/2 is a special language, and could be the strange child of forbidden love between Lisp and Forth. The reversed polish notation and the definitional working come from Forth, only keeping an anonymous stack; the control structures come from Lisp. What a brilliant genealogy !This language has very weak typing, if any typing at all. The variables are declared on-the-fly at their first use, and the type of the data to store at that time is used. So the same variable X might contain a complex matrix and a few moments later, a string.In fact, using variables is not very common, because everything can be done directly with objects present in the stack.The five hundred and twenty-five thousand lines of code (!) can be cleanly compiled. The language is fully usable (I do so every day); RPL/2 scripts can be run, and external compiled routines might be called. The interface with the outer world is a C interface.The usable and working data types are as follows:- Binary integers (64 bits);- Signed integers (64 bits);- Real numbers (64 bits);- Complex numbers (2*64 bits);- Strings (any length);- Lists;- Complex,real or integer vectors;- Complex,real or integer matrices;- Names;- Algebraic expressions;- Expressions stated in reverse polish notation.At the time of this writing, built-in definitions are:- The whole set of stack management operations;- The functions related to local and global variables,as well as sub-definitions jumping;- Defined and undefined loops,with or without a counter;- Comparison functions;- Testing instructions;- Functions dealing with trigonometry;- Logarithmical functions;- Advanced calculations on matrices (LU decomposition,generalized eigenvalues)- Evaluation functions EVAL and ->NUM;- and many others... What's New in This Release: · pipe() is overwritten by a macro to avoid a system error. · Communications between processes are done with pipes, and these pipes are managed by a specific asynchronous thread. · If a script tries to create more threads than the management thread can destroy, you can quickly achieve the maximum number of opened files, and pipe() will return a system error. · A major bug (deadlock) is fixed in process and thread management. · A major bug is fixed in DET intrinsic (determinant was computed without LU diagonalization). · A new SWAPCNTXT intrinsic is added. · A minor bug is fixed in Makefile.am (licenses rule).


RPL/2 Related Software