Add iota virtual sequence which will eventually replace integers-as-sequences
							parent
							
								
									a743e6a08b
								
							
						
					
					
						commit
						a977691d82
					
				| 
						 | 
				
			
			@ -1262,6 +1262,17 @@ HELP: shorten
 | 
			
		|||
    "V{ 1 2 3 }"
 | 
			
		||||
} } ;
 | 
			
		||||
 | 
			
		||||
HELP: iota
 | 
			
		||||
{ $values { "n" integer } { "iota" iota } }
 | 
			
		||||
{ $description "Creates an immutable virtual sequence containing the integers from 0 to " { $snippet "n-1" } "." }
 | 
			
		||||
{ $examples
 | 
			
		||||
  { $example
 | 
			
		||||
    "USING: math.parser sequences ;"
 | 
			
		||||
    "3 iota [ sq ] map ."
 | 
			
		||||
    "{ \"0\" \"1\" \"2\" }"
 | 
			
		||||
  }
 | 
			
		||||
} ;
 | 
			
		||||
 | 
			
		||||
ARTICLE: "sequences-unsafe" "Unsafe sequence operations"
 | 
			
		||||
"The " { $link nth-unsafe } " and " { $link set-nth-unsafe } " sequence protocol bypasses bounds checks for increased performance."
 | 
			
		||||
$nl
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,6 +101,16 @@ M: integer nth-unsafe drop ;
 | 
			
		|||
 | 
			
		||||
INSTANCE: integer immutable-sequence
 | 
			
		||||
 | 
			
		||||
! In the future, this will replace integer sequences
 | 
			
		||||
TUPLE: iota { n read-only } ;
 | 
			
		||||
 | 
			
		||||
: iota ( n -- iota ) \ iota boa ; inline
 | 
			
		||||
 | 
			
		||||
M: iota length n>> ;
 | 
			
		||||
M: iota nth-unsafe drop ;
 | 
			
		||||
 | 
			
		||||
INSTANCE: iota immutable-sequence
 | 
			
		||||
 | 
			
		||||
: first-unsafe ( seq -- first )
 | 
			
		||||
    0 swap nth-unsafe ; inline
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue