29 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: generic help.markup help.syntax kernel kernel.private
							 | 
						||
| 
								 | 
							
								namespaces sequences words arrays layouts help effects math
							 | 
						||
| 
								 | 
							
								layouts classes.private classes compiler.units ;
							 | 
						||
| 
								 | 
							
								IN: classes.intersection
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ARTICLE: "intersections" "Intersection classes"
							 | 
						||
| 
								 | 
							
								"An object is an instance of a intersection class if it is an instance of all of its participants."
							 | 
						||
| 
								 | 
							
								{ $subsection POSTPONE: INTERSECTION: }
							 | 
						||
| 
								 | 
							
								{ $subsection define-intersection-class }
							 | 
						||
| 
								 | 
							
								"Intersection classes can be introspected:"
							 | 
						||
| 
								 | 
							
								{ $subsection participants }
							 | 
						||
| 
								 | 
							
								"The set of intersection classes is a class:"
							 | 
						||
| 
								 | 
							
								{ $subsection intersection-class }
							 | 
						||
| 
								 | 
							
								{ $subsection intersection-class? }
							 | 
						||
| 
								 | 
							
								"Intersection classes are used to associate a method with objects which are simultaneously instances of multiple different classes, as well as to conveniently define predicates." ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ABOUT: "intersections"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HELP: define-intersection-class
							 | 
						||
| 
								 | 
							
								{ $values { "class" class } { "participants" "a sequence of classes" } }
							 | 
						||
| 
								 | 
							
								{ $description "Defines a intersection class with specified participants. This is the run time equivalent of " { $link POSTPONE: INTERSECTION: } "." }
							 | 
						||
| 
								 | 
							
								{ $notes "This word must be called from inside " { $link with-compilation-unit } "." }
							 | 
						||
| 
								 | 
							
								{ $side-effects "class" } ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{ intersection-class define-intersection-class POSTPONE: INTERSECTION: } related-words
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HELP: intersection-class
							 | 
						||
| 
								 | 
							
								{ $class-description "The class of intersection classes." } ;
							 |