16 lines
		
	
	
		
			409 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			16 lines
		
	
	
		
			409 B
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								! Based on Clojure's PersistentHashMap by Rich Hickey.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								USING: accessors kernel locals persistent.hashtables.nodes ;
							 | 
						||
| 
								 | 
							
								IN: persistent.hashtables.nodes.empty
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: empty-node (entry-at) 3drop f ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: empty-node (pluck-at) 2nip ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M:: empty-node (new-at) ( shift value key hashcode node -- node' added-leaf )
							 | 
						||
| 
								 | 
							
								    value key hashcode <leaf-node> dup ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: empty-node >alist% drop ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								M: empty-node hashcode>> drop 0 ;
							 |