Annotation of 43BSD/contrib/icon/book/19/drv.icn, revision 1.1.1.1

1.1       root        1: procedure drv(exp,var)
                      2:    local arg1, op, arg2
                      3:    if exp ? {
                      4:       op := tab(upto('(')) &
                      5:       move(1) &
                      6:       arg1 := tab(bal(',')) &
                      7:       move(1) &
                      8:       arg2 := tab(bal(')'))
                      9:       }
                     10:    then return case op of {
                     11:       "+":  add(drv(arg1,var),drv(arg2,var))
                     12:       "-":  sub(drv(arg1,var),drv(arg2,var))
                     13:       "*":  add(mpy(arg1,drv(arg2,var)),
                     14:                mpy(arg2,drv(arg1,var)))
                     15:       "/":  div(sub(mpy(arg2,drv(arg1,var)),
                     16:                mpy(arg1,drv(arg2,var))),rse(arg2,"2"))
                     17:       "^":  mpy(mpy(arg2,rse(arg1,sub(arg2,"1"))),
                     18:                drv(arg1,var))
                     19:       }
                     20:    else return if exp == var then "1" else "0"
                     21: end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.