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
 | 
			
		||||
 */
 | 
			
		||||
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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +98,7 @@ export function lessThan(xs: number[], ys: number[]): boolean {
 | 
			
		|||
/**
 | 
			
		||||
 * 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 = [];
 | 
			
		||||
	for (const x of xs) {
 | 
			
		||||
		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 EndoRelation<T> = Relation<T, T>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue