Seed7 - The extensible programming language
Seed7 FAQ Manual Screenshots Examples Libraries Algorithms Download Links
Screenshots Panic Mandelbr Planets Comanche Calc7 Savehd7 Compiler Dnafight Sudoku Wator Tar7 Sydir7 Ftp7 Castle Tetris Make7 Ftpserv Basic Pairs Shisen Eliza Toutf8 Lander Wiz Startrek Mahjong
Calc7 Source Code
 previous   up   next 

Calc7 is the Seed7 calculator. It works like a read-eval-print loop (REPL).

Calc7 is interactive program that reads single expressions, evaluates them and writes the results. Calc7 can be called from a command window with:

s7 calc7

Calc7 requests user input with the prompt:


The user can enter an expression (on this page user input is displayed in green):

calculate? 1+2*3

Pressing Return (or Enter) starts the evaluation. Calc7 responds with the result:


The commands quit and exit can be used to leave calc7. An input line can be edited with the following keys:

Backspace    Delete the charater to the left.
Delete    Delete the current character.
Home    Jump to the first position.
End    Jump behind the last position.
,    Move cursor left and right.
,    Get previous input lines from the command history.

Calc7 accepts arbitrary complex Seed7 expressions:

calculate? length(str(-((1+2)*4)**12))

The expressions can use the types boolean, integer, bigInteger, rational, bigRational, float, complex, char, string, array, hash, set, time and duration:

calculate? 2 + 2 >= 2 * 2
calculate? "hi" mult 5
calculate? 2.5**2
calculate? 1/19
calculate? time(NOW)
2014-07-30 12:56:13.915252 UTC+2 (DST)

Syntax errors are shown as follows:

calculate? "abc
*** STRING(17):25: String literal exceeds source line
*** STRING(18):46: ")" expected found "exception"
*** 2 errors found

Computation errors are shown with the name of the exception:

calculate? 1 div 0

When the result of an integer expression is too big or too small the exception OVERFLOW_ERROR is raised:

calculate? 4000000000 * 3000000000

To avoid an overflow the computation can be done with bigInteger:

calculate? 4000000000_ * 3000000000_

 previous   up   next