glenda.party
term% ls -F
term% cat index.txt
HOC(1)                      General Commands Manual                     HOC(1)

NAME
       hoc - interactive floating point language

SYNOPSIS
       hoc [ file ...  ]

DESCRIPTION
       Hoc  interprets  a  simple  language  for floating point arithmetic, 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.   Expressions  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 con‐
       tains the value of the last expression evaluated.  The variables E, PI,
       PHI, GAMMA and DEG are predefined; the last is  59.25...,  degrees  per
       radian.

       Expressions  are formed with these C-like operators, listed by decreas‐
       ing 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 "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; re‐
       turn is used to return with a value from a function.  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)

SOURCE
       /sys/src/cmd/hoc

SEE ALSO
       bc(1), dc(1)
       B. W. Kernighan and R. Pike, The Unix  Programming  Environment,  Pren‐
       tice-Hall, 1984

BUGS
       Error recovery is imperfect within function and procedure definitions.

                                                                        HOC(1)