mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
216 lines
8.2 KiB
Plaintext
216 lines
8.2 KiB
Plaintext
Calc Enhancement Wish List:
|
|
|
|
Send calc comments, suggestions, bug fixes, enhancements and
|
|
interesting calc scripts that you would like you see included in
|
|
future distributions to:
|
|
|
|
calc-tester at postofc dot corp dot sgi dot com
|
|
|
|
[[ Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
|
|
|
The following items are in the calc wish list. Programs like this
|
|
can be extended and improved forever.
|
|
|
|
Calc bug reports, however, should be sent to:
|
|
|
|
calc-bugs at postofc dot corp dot sgi dot com
|
|
|
|
[[ Replace 'at' with @, 'dot' is with . and remove the spaces ]]
|
|
|
|
See the 'todo' help file for higher priority todo items.
|
|
|
|
=-=
|
|
|
|
* In general use faster algorithms for large numbers when they
|
|
become known. In particular, look at better algorithms for
|
|
very large numbers -- multiply, square and mod in particular.
|
|
|
|
* Implement an autoload feature. Associate a calc resource filename
|
|
with a function or global variable. On the first reference of
|
|
such item, perform an automatic load of that file.
|
|
|
|
* Add error handling statements, so that QUITs, errors from the
|
|
'eval' function, division by zeroes, and so on can be caught.
|
|
This should be done using syntax similar to:
|
|
|
|
ONERROR statement DO statement;
|
|
|
|
Something like signal isn't versatile enough.
|
|
|
|
* Add a debugging capability so that functions can be single stepped,
|
|
breakpoints inserted, variables displayed, and so on.
|
|
|
|
* Figure out how to write all variables out to a file, including
|
|
deeply nested arrays, lists, and objects.
|
|
|
|
Add the ability to read and write a value in some binary form.
|
|
Clearly this is easy for non-neg integers. The question of
|
|
everything else is worth pondering.
|
|
|
|
* Eliminate the need for the define keyword by doing smarter parsing.
|
|
|
|
* Allow results of a command (or all commands) to be re-directed to a
|
|
file or piped into a command.
|
|
|
|
* Add some kind of #include and #define facility. Perhaps use
|
|
the C pre-processor itself?
|
|
|
|
* Support a more general input and output base mode other than
|
|
just dec, hex or octal.
|
|
|
|
* Implement a form of symbolic algebra. Work on this has already
|
|
begun. This will use backquotes to define expressions, and new
|
|
functions will be able to act on expressions. For example:
|
|
|
|
x = `hello * strlen(mom)`;
|
|
x = sub(x, `hello`, `hello + 1`);
|
|
x = sub(x, `hello`, 10, `mom`, "curds");
|
|
eval(x);
|
|
|
|
prints 55.
|
|
|
|
* Place the results of previous commands into a parallel history list.
|
|
Add a binding that returns the saved result of the command so
|
|
that one does not need to re-execute a previous command simply
|
|
to obtain its value.
|
|
|
|
If you have a command that takes a very long time to execute,
|
|
it would be nice if you could get at its result without having
|
|
to spend the time to reexecute it.
|
|
|
|
* Add a binding to delete a value from the history list.
|
|
|
|
One may need to remove a large value from the history list if
|
|
it is very large. Deleting the value would replace the history
|
|
entry with a null value.
|
|
|
|
* Add a binding to delete a command from the history list.
|
|
|
|
Since you can delete values, you might as well be able to
|
|
delete commands.
|
|
|
|
* All one to alter the size of the history list thru config().
|
|
|
|
In some cases, 256 values is too small, in others it is too large.
|
|
|
|
* Add a builtin that returns a value from the history list.
|
|
As an example:
|
|
|
|
histval(-10)
|
|
|
|
returns the 10th value on the history value list, if such
|
|
a value is in the history list (null otherwise). And:
|
|
|
|
histval(23)
|
|
|
|
return the value of the 23rd command given to calc, if
|
|
such a value is in the history list (null otherwise).
|
|
|
|
It would be very helpful to use the history values in
|
|
subsequent equations.
|
|
|
|
* Add a builtin that returns command as a string from the
|
|
history list. As an example:
|
|
|
|
history(-10)
|
|
|
|
returns a string containing the 10th command on the
|
|
history list, if a such a value is in the history list
|
|
(empty string otherwise). And:
|
|
|
|
history(23)
|
|
|
|
return the string containing the 23rd command given to calc, if
|
|
such a value is in the history list (empty string otherwise).
|
|
|
|
One could use the eval() function to re-evaluate the command.
|
|
|
|
* Allow one to optionally restore the command number to calc
|
|
prompts. When going back in the history list, indicate the
|
|
command number that is being examined.
|
|
|
|
The command number was a useful item. When one is scanning the
|
|
history list, knowing where you are is hard without it. It can
|
|
get confusing when the history list wraps or when you use
|
|
search bindings. Command numbers would be useful in
|
|
conjunction with positive args for the history() and histval()
|
|
functions as suggested above.
|
|
|
|
* Add a builtin that returns the current command number.
|
|
For example:
|
|
|
|
cmdnum()
|
|
|
|
returns the current command number.
|
|
|
|
This would allow one to tag a value in the history list. One
|
|
could save the result of cmdnum() in a variable and later use
|
|
it as an arg to the histval() or history() functions.
|
|
|
|
* Add a factoring builtin functions. Provide functions that perform
|
|
multiple polynomial quadratic sieves, elliptic curve, difference
|
|
of two squares, N-1 factoring as so on. Provide a easy general
|
|
factoring builtin (say factor(foo)) that would attempt to apply
|
|
whatever process was needed based on the value.
|
|
|
|
Factoring builtins would return a matrix of factors.
|
|
|
|
It would be handy to configure, via config(), the maximum time
|
|
that one should try to factor a number. By default the time
|
|
should be infinite. If one set the time limit to a finite
|
|
value and the time limit was exceeded, the factoring builtin
|
|
would return whatever if had found thus far, even if no new
|
|
factors had been found.
|
|
|
|
Another factoring configuration interface, via config(), that
|
|
is needed would be to direct the factoring builtins to return
|
|
as soon as a factor was found.
|
|
|
|
* Allow one to config calc break up long output lines.
|
|
|
|
The command: calc '2^100000' will produce one very long
|
|
line. Many times this is reasonable. Long output lines
|
|
are a problem for some utilities. It would be nice if one
|
|
could configure, via config(), calc to fold long lines.
|
|
|
|
By default, calc should continue to produce long lines.
|
|
|
|
One option to config should be to specify the length to
|
|
fold output. Another option should be to append a trailing
|
|
\ on folded lines (as some symbolic packages use).
|
|
|
|
* Allow one to use the READ and WRITE commands inside a function.
|
|
|
|
* Remove or increase limits on factor(), lfactor(), isprime(),
|
|
nextprime(), and prevprime(). Currently these functions cannot
|
|
search for factors > 2^32.
|
|
|
|
* Add read -once -try "filename" which would do nothing
|
|
if "filename" was not a readable file.
|
|
|
|
## Copyright (C) 1999 Landon Curt Noll
|
|
##
|
|
## Calc is open software; you can redistribute it and/or modify it under
|
|
## the terms of the version 2.1 of the GNU Lesser General Public License
|
|
## as published by the Free Software Foundation.
|
|
##
|
|
## Calc is distributed in the hope that it will be useful, but WITHOUT
|
|
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
|
## Public License for more details.
|
|
##
|
|
## A copy of version 2.1 of the GNU Lesser General Public License is
|
|
## distributed with calc under the filename COPYING-LGPL. You should have
|
|
## received a copy with calc; if not, write to Free Software Foundation, Inc.
|
|
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
##
|
|
## @(#) $Revision: 29.1 $
|
|
## @(#) $Id: wishlist,v 29.1 1999/12/14 09:16:10 chongo Exp $
|
|
## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/wishlist,v $
|
|
##
|
|
## Under source code control: 1991/07/21 04:37:24
|
|
## File existed as early as: 1991
|
|
##
|
|
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
|
|
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
|