HOC(1) HOC(1)
NAME
hoc - interactive floating point language
SYNOPSIS
hoc [ -e expression ] [ 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. The -e option allows input to hoc to be specified on
the command line, to be treated as if it appeared in a file.
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, exp, 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 statement print prints a list of
expressions that may include string constants such as
Page 1 Plan 9 (printed 10/28/25)
HOC(1) HOC(1)
"hello\n".
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.
EXAMPLES
func gcd(a, b) {
temp = abs(a) % abs(b)
if(temp == 0) return abs(b)
return gcd(b, temp)
}
for(i=1; i<12; i++) print gcd(i,12)
SOURCE
/sys/src/cmd/hoc
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/28/25)