[Jprogramming] special coding for stack operations

Dan Bron jf at dbron.net
Fri Jul 14 03:22:29 HKT 2006


>Hmm, doing   name=: p{name   in O(1) space and O(n) time

Since you can do   name=:name,new_data   in  O(1) space it is possible to do  name =: new_data , name  in O(1) space and O(n) time.  

The idea is to "shift in" the new data.  That is, append the data using the optimized appending code, then rotate the array by  >:#new_data  .

	   name =: 'abcd'       
	   name =: name , '123'  NB.  O(1)  
	   name =: 4 |. name     NB. 4 -: >: # '123'
	   name
	123abcd

I don't know how this scheme compares to the current implementation.  I suspect that's a question which must be answered empirically.  

If the scheme is superior, I suggest special casing each of:

	   name =: name     ,  new_data
	   name =: name     ,~ new_data

	   name =: new_data ,  name
	   name =: new_data ,~ name

-Dan


More information about the Programming mailing list