Sha256: 186de8cbe66462e168586f4adf89e40bdaeb3a96bbc6ec20375294f09c8f460c

Contents?: true

Size: 1.23 KB

Versions: 10

Compression:

Stored size: 1.23 KB

Contents

# Most of this long script is mere presentation.
# All you really need to do is push two integers onto the stack
# and then execute add, sub, mul, idiv, or pow.

$ClearScreen { # Using ANSI terminal control
  `\e[2J\e[1;1H' print flush
} bind def

$Say { # string Say -
  `\n' cat print flush
} bind def

$ShowPreamble {
`To show how integer arithmetic in done in Onyx,' Say
`we\'ll use two numbers of your choice, which' Say
`we\'ll call A and B.\n' Say
} bind def

$Prompt { # stack: string --
  stdout exch write pop flush
} def

$GetInt { # stack: name -- integer
  dup cvs `Enter integer ' exch cat `: ' cat
  Prompt stdin readline pop cvx eval def
} bind def

$Template { # arithmetic_operator_name label_string Template result_string
  A cvs ` ' B cvs ` ' 5 ncat over cvs ` gives ' 3 ncat exch
  A B dn cvx eval cvs `.' 3 ncat Say
} bind def

$ShowResults {
  $add `Addition: ' Template
  $sub `Subtraction: ' Template
  $mul `Multiplication: ' Template
  $idiv `Division: ' Template
  `Note that the result of integer division is rounded toward zero.' Say
  $pow `Exponentiation: ' Template
  `Note that the result of raising to a negative power always gives a real number.' Say
} bind def

ClearScreen ShowPreamble $A GetInt $B GetInt ShowResults

Version data entries

10 entries across 7 versions & 1 rubygems

Version Path
zettacode-0.1.7 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.6 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.6 files.zettacode2/arithmetic.integer/onyx.txt
zettacode-0.1.5 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.5 files.zettacode2/arithmetic.integer/onyx.txt
zettacode-0.1.4 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.4 files.zettacode2/arithmetic.integer/onyx.txt
zettacode-0.1.3 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.2 files.zettacode/arithmetic.integer/onyx.txt
zettacode-0.1.1 zettacode.files/arithmetic.integer/onyx.txt