|
I've been using a perl-based calc for a number of years now. It started as a
one liner eval-ing expressions on the command line. My favorite feature is that
if symlinked as "hex", "oct", or "bin", it prints the output in hexadecimal,
octal, or binary. And, because the evaluation is done by perl, hexadecimal,
octal, and binary numbers can be entered using "0x", "0", and "0b" prefixes.
A minor improvement was the substitution of commas with underscores, which perl allows in numbers for easier readability. Entering "1,000,000"
is much nicer on the eyes than carefully counting the number of trailing
zeros. Two weeks ago, after becoming fed up with having to copy and paste
results from one line to the next, I wrapped it in a repl and added
bc(1)-like support for "." expanding to the last value. Rather embarrassingly, I
started to implement bc(1)-style variables, but then
realized this was incredibly silly as you can simply use perl variables directly. :-) https://github.com/mct/junkdrawer/commits/master/bin/calc I fully support writing other calc implementations, especially in languages
such as C! It's a great exercise, and can become very complex very quickly. bc(1) supports arbitrary precision (try: echo "scale=500; 4a(1) 42" | bc -l), which is super awesome. In C, I've only implemented RPN calculators, never infix, which would be fun to try. |