HOC(1) HOC(1)
NAME
hoc - interactive floating point language
SYNOPSIS
hoc [ file ... ]
DESCRIPTION
Hoc interprets a simple language for floating point arith-
metic, at about the level of BASIC, with C-like syntax and
functions.
The named files are read and interpreted in order. If no
file is given or if file is `-' hoc interprets the standard
input.
Hoc input consists of expressions and statements. Expres-
sions are evaluated and their results printed. Statements,
typically assignments and function or procedure definitions,
produce no output unless they explicitly call print.
Variable names have the usual syntax, including `_'; the
name `_' by itself contains the value of the last expression
evaluated. The variables E, PI, PHI, GAMMA and DEG are pre-
defined; the last is 59.25..., degrees per radian.
Expressions are formed with these C-like operators, listed
by decreasing precedence.
^ exponentiation
! - ++ --
* / %
+ -
> >= < <= == !=
&&
||
= += -= *= /= %=
Built in functions are abs, acos, asin, atan (one argument),
cos, cosh, erf, erfc, exp, gamma, int, log, log10, sin,
sinh, sqrt, tan, and tanh. The function read(x) reads a
value into the variable x and returns 0 at EOF; the state-
ment print prints a list of expressions that may include
string constants such as "hello\n".
Page 1 Plan 9 (printed 10/27/25)
HOC(1) HOC(1)
Control flow statements are if-else, while, and for, with
braces for grouping. Newline ends a statement. Backslash-
newline is equivalent to a space.
Functions and procedures are introduced by the words func
and proc; return is used to return with a value from a func-
tion. Within a function or procedure, arguments are
referred to as $1, $2, etc.; all other variables are global.
EXAMPLES
func gcd() {
temp = abs($1) % abs($2)
if(temp == 0) return abs($2)
return gcd($2, temp)
}
for(i=1; i<12; i++) print gcd(i,12)
SEE ALSO
bc(1), dc(1)
B. W. Kernighan and R. Pike, The Unix Programming Environ-
ment, Prentice-Hall, 1984
BUGS
Error recovery is imperfect within function and procedure
definitions.
Page 2 Plan 9 (printed 10/27/25)