plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

unbind.ps (526B)


      1 %
      2 % Unbind the operators in an executable array or packedarray. Leaves the
      3 % unbound array or the original object on the stack.
      4 %
      5 
      6 /unbind {
      7 	0 index xcheck
      8 	1 index type /arraytype eq
      9 	2 index type /packedarraytype eq or and {
     10 		dup length array copy cvx
     11 		dup 0 exch {
     12 			dup type /operatortype eq {
     13 				(                          ) cvs cvn cvx
     14 			} if
     15 
     16 			0 index xcheck
     17 			1 index type /arraytype eq
     18 			2 index type /packedarraytype eq or and {
     19 				unbind
     20 			} if
     21 
     22 			3 copy put pop
     23 			1 add
     24 		} forall
     25 		pop
     26 	} if
     27 } def
     28