23 lines
		
	
	
		
			945 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			23 lines
		
	
	
		
			945 B
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: combinators help.markup help.syntax ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								IN: combinators.extras
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HELP: cond-case
							 | 
						||
| 
								 | 
							
								{ $values { "assoc" "a sequence of quotation pairs and an optional quotation" } }
							 | 
						||
| 
								 | 
							
								{ $description
							 | 
						||
| 
								 | 
							
								    "Similar to " { $link case } ", this evaluates an " { $snippet "obj" } " according to the first quotation in each pair. If any quotation returns true, calls the second quotation without " { $snippet "obj" } " on the stack."
							 | 
						||
| 
								 | 
							
								    $nl
							 | 
						||
| 
								 | 
							
								    "If there is no quotation that returns true, the default case is taken. If the last element of " { $snippet "assoc" } " is a quotation, the quotation is called with " { $snippet "obj" } " on the stack. Otherwise, a " { $link no-cond } " error is raised."
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								{ $examples
							 | 
						||
| 
								 | 
							
								    { $example
							 | 
						||
| 
								 | 
							
								        "USING: combinators.extras io kernel math ;"
							 | 
						||
| 
								 | 
							
								        "0 {"
							 | 
						||
| 
								 | 
							
								        "    { [ 0 > ] [ \"positive\" ] }"
							 | 
						||
| 
								 | 
							
								        "    { [ 0 < ] [ \"negative\" ] }"
							 | 
						||
| 
								 | 
							
								        "    [ drop \"zero\" ]"
							 | 
						||
| 
								 | 
							
								        "} cond-case print"
							 | 
						||
| 
								 | 
							
								        "zero"
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								} ;
							 |