37 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2012 Doug Coleman.
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: help.markup help.syntax kernel math sequences ;
 | 
						|
IN: sequences.windowed
 | 
						|
 | 
						|
HELP: <windowed-sequence>
 | 
						|
{ $values
 | 
						|
    { "sequence" sequence } { "n" sequence }
 | 
						|
    { "windowed-sequence" windowed-sequence }
 | 
						|
}
 | 
						|
{ $description "Create a new windowed sequence of window size " { $snippet "n" } " over " { $snippet "sequence" } "." } ;
 | 
						|
 | 
						|
HELP: in-bound
 | 
						|
{ $values
 | 
						|
    { "n" integer } { "sequence" sequence }
 | 
						|
    { "n'" integer }
 | 
						|
}
 | 
						|
{ $description "Clamps an integer from 0 to the sequence length." } ;
 | 
						|
 | 
						|
HELP: in-bounds
 | 
						|
{ $values
 | 
						|
    { "a" sequence } { "b" sequence } { "sequence" sequence }
 | 
						|
    { "a'" sequence } { "b'" sequence }
 | 
						|
}
 | 
						|
{ $description "Clamps two integers from 0 to the sequence length. While not in bounds for calling " { $link nth } ", these integers are in bounds for calling " { $link <slice> } "." } ;
 | 
						|
 | 
						|
ARTICLE: "sequences.windowed" "Windowed sequences"
 | 
						|
 | 
						|
"The " { $vocab-link "sequences.windowed" } " vocabulary provides a read-only virtual sequence whose elements are slices of length " { $snippet "n" } " from the current element looking backwards, inclusive of the current element. Slices may be less than " { $snippet "n" } " elements in length, especially at the head of the sequence, where the first slice will be of length 1." $nl
 | 
						|
"Windowed sequences support " { $link nth } " and " { $link length } " from the " { $link "sequence-protocol" } "." $nl
 | 
						|
"Creating a windowed sequence:"
 | 
						|
{ $subsections <windowed-sequence> }
 | 
						|
"Helper words for creating bounds-checked slices:"
 | 
						|
{ $subsections in-bound in-bounds } ;
 | 
						|
 | 
						|
ABOUT: "sequences.windowed"
 |