37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2013 John Benediktsson
 | |
| ! See http://factorcode.org/license.txt for BSD license
 | |
| 
 | |
| USING: accessors combinators hash-sets hash-sets.wrapped kernel
 | |
| parser sequences sets vocabs.loader ;
 | |
| 
 | |
| IN: hash-sets.sequences
 | |
| 
 | |
| TUPLE: sequence-wrapper < wrapped-key ;
 | |
| 
 | |
| C: <sequence-wrapper> sequence-wrapper
 | |
| 
 | |
| M: sequence-wrapper equal?
 | |
|     over sequence-wrapper?
 | |
|     [ [ underlying>> ] bi@ sequence= ]
 | |
|     [ 2drop f ] if ; inline
 | |
| 
 | |
| M: sequence-wrapper hashcode*
 | |
|     underlying>> [ sequence-hashcode ] recursive-hashcode ; inline
 | |
| 
 | |
| TUPLE: sequence-hash-set < wrapped-hash-set ;
 | |
| 
 | |
| : <sequence-hash-set> ( n -- shash-set )
 | |
|     <hash-set> sequence-hash-set boa ; inline
 | |
| 
 | |
| M: sequence-hash-set wrap-key drop <sequence-wrapper> ;
 | |
| 
 | |
| M: sequence-hash-set clone
 | |
|     underlying>> clone sequence-hash-set boa ; inline
 | |
| 
 | |
| : >sequence-hash-set ( members -- shash-set )
 | |
|     [ <sequence-wrapper> ] map >hash-set sequence-hash-set boa ;
 | |
| 
 | |
| SYNTAX: SHS{ \ } [ >sequence-hash-set ] parse-literal ;
 | |
| 
 | |
| { "hash-sets.sequences" "prettyprint" } "hash-sets.sequences.prettyprint" require-when
 |