import { ComparableValues, ComparisonNumbers, curry } from '@typed/lambda' /** * Sort a function in descending order given a comparison function. * @param f :: (a -> b) * @param a :: a * @param b :: a * @returns :: int */ export const descend = curry(function descend( f: (a: A) => B, a: A, b: A, ): ComparisonNumbers { const aa = f(a) const bb = f(b) if (aa < bb) { return 1 } if (aa > bb) { return -1 } return 0 }) as { (f: (a: A) => B, a: A, b: A): ComparisonNumbers (f: (a: A) => B, a: A): (b: A) => ComparisonNumbers (f: (a: A) => B): { (a: A, b: A): ComparisonNumbers (a: A): (b: A) => ComparisonNumbers } }