Add Predicate type
This commit is contained in:
		
							parent
							
								
									78ec06bda3
								
							
						
					
					
						commit
						8025b121af
					
				
					 2 changed files with 6 additions and 3 deletions
				
			
		| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
import { EndoRelation } from "./relation";
 | 
					import { EndoRelation, Predicate } from './relation';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Count the number of elements that satisfy the predicate
 | 
					 * Count the number of elements that satisfy the predicate
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export function countIf<T>(f: (x: T) => boolean, xs: T[]): number {
 | 
					
 | 
				
			||||||
 | 
					export function countIf<T>(f: Predicate<T>, xs: T[]): number {
 | 
				
			||||||
	return xs.filter(f).length;
 | 
						return xs.filter(f).length;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,7 +98,7 @@ export function lessThan(xs: number[], ys: number[]): boolean {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Returns the longest prefix of elements that satisfy the predicate
 | 
					 * Returns the longest prefix of elements that satisfy the predicate
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export function takeWhile<T>(f: (x: T) => boolean, xs: T[]): T[] {
 | 
					export function takeWhile<T>(f: Predicate<T>, xs: T[]): T[] {
 | 
				
			||||||
	const ys = [];
 | 
						const ys = [];
 | 
				
			||||||
	for (const x of xs) {
 | 
						for (const x of xs) {
 | 
				
			||||||
		if (f(x)) {
 | 
							if (f(x)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					export type Predicate<T> = (x: T) => boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type Relation<T, U> = (x: T, y: U) => boolean;
 | 
					export type Relation<T, U> = (x: T, y: U) => boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type EndoRelation<T> = Relation<T, T>;
 | 
					export type EndoRelation<T> = Relation<T, T>;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue