procedure main(arglist) L := if *arglist > 0 then arglist else [-7, 1, 5, 2, -4, 3, 0] # command line args or default every writes( "equilibrium indicies of [ " | (!L ||" ") | "] = " | (eqindex(L)||" ") | "\n" ) end procedure eqindex(L) # generate equilibrium points in a list L or fail local s,l,i every (s := 0, i := !L) do s +:= numeric(i) | fail # sum and validate every (l := 0, i := 1 to *L) do { if l = (s-L[i])/2 then suspend i l +:= L[i] # sum of left side } end